hibernate merge和saveorupdate、persist和save
??? 一直很纳闷这个merge和persist方法,平时也很少用。今天研究下总结下
??? 一、merge? 翻译:合并;融合
?
????????? 其实merge方法很简单,看代码。
?????????
Hibernate: select father0_.id as id1_0_, father0_.name as name1_0_ from Father father0_ where father0_.id=?Hibernate: insert into Father (name) values (?)7
??注意看最后的一个7,这是我们之前set的id,但是数据库的记录下对应的id是1;也就是说father对象经过merge方法后没有任何的变化,一直是一个transient状态。所以要注意,一个对象经过merge后它和数据库不一定一致。
? 现在我们来看看saveorupdate方法,这个方法也很简单,它会根据对象的id是否为空来决定进行inset或者update,
为空就inset,不为空就update,任何情况下都不会执行select语句,所以在update一个数据库不存在的id时会有Exception。
?
二、未完待续- - !