Hibernte和对象相关的几个方法

save(),update(),saveOrUpdate():
save的作用是把一个新的对象保存,update的作用是把一个游离的对象保存(例:第一个session加载对象后,对象被传递到表现层,对象发生了一些改动后,又被传回到业务逻辑层,程序会调用第二个session的update方法来对这些改动进行持久化),而saveOrUpdate基本上合成了save和update;

save()和persist():

通过Javadoc可以看到,save方法返回类型为Serializable,而persist方法返回类型为void。也就是说save方法返回的是这个对象持久化后的标识符,java reference指出,不论是在事务外部还是在事务内部都是返回的;而persist方法不保证返回标识符,有可能会等到flush方法被调用时,java reference指出,在一个事务外部调用persist方法时,不一定执行sql insert语句,这样的话,对于提高性能比较重要,可以用来封装一个长的会话流程。

update()和lock():
对游离的对象做出了一些修改操作后,然后可以通过调用update这个方法对对象进行持久化;
lock方法将游离的对象进行持久化,然后可以对持久化对象进行一些操作,在调用flush方法使修改生效。

update()和merge()

update方法前面已经介绍,是将一个游离的对象持久化,返回类型为void类型;而merge方法的返回类型为Object(持久化的对象),merge方法操作的方式是将给定游离的对象的状态拷贝到具有相同标识符的持久化对象(如果Session没有相应的持久化实例,则尝试从数据库中加载,或创建新的持久化实例),但是用户给出的对象没有关联到session上,它依旧是托管的。

你可能感兴趣的:(sql)