merge(object),当 object对象是new出来的,也就是临时态的时候,merge会执行insert操作,当object对象为持久态的时候,merge会执行update操作。执行insert操作后,对象依然是临时态,即:
Session s = sessionFactory.openSession();
Transaction tx = null;
try {
User u = new User();
u.setName("111");
tx = s.beginTransaction();
s.merge(u);
u.setName("222");
tx.commit();
}catch(Exception e) {
if(tx != null)
tx.rollback();
}finally {
if(s != null)
s.close();
}
执行的结果:数据库中,name字段依然是111,而没有改成222,而如果user是持久态(如用session.get()取得),那么name同样也会被修改成222
/************* 有待继续测试验证其正确性,并补充,此处暂做为一个记录 ******************/