Hibernate中save、saveorupdate、persist方法的区别

原创 2016年06月02日 11:39:26
所有这三个方法,也就是save()、saveOrUpdate()和persist()都是用于将对象保存到数据库中的方法,但其中有些细微的差别。例如,save()只能INSERT记录,但是saveOrUpdate()可以进行记录的INSERT和UPDATE。还有,save()的返回值是一个Serializable对象,而persist()方法返回值为void。


save与saveOrUpdate的区别
    save通过INSERT语句将对象保存到数据库,产生一个新的ID,将数据插入到数据库,并返回一个Serializable对象。
    saveOrUpdate能根据对象是否已存在,而执行插入或更新。
显然saveOrUpdate更加灵活,但它需要额外判断对象是否已存在。


save与persist的区别
返回类型不同:save返回Serializable对象,而persist返回void
ID赋值时机不同:二者同样用于将transient实例持久化,但persist不保证ID值立即赋给持久化实例,可能会在flush的时候给ID赋值。
transaction外的行为不同:如果在transaction之外调用,persist保证会立即执行INSERT语句;而save则不保证(save返回一个identifier,如果必须执行INSERT来获取该identifier,则就会立即执行INSERT,而不论是在transaction之内或之外)
使用场景:由于上述第三点区别,persist方法适用于被扩展的Session上下文的长期运行的会话中(useful in long-running conversations with an extended Session context);而save则不适用。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hibernate中各种保存方法的区别 save persist update saveOrUpdate merge lock

hibernate的保存 hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别: 一、预备知识: 在所有之前,说明一下,对于hibernate,它的对象有...

Hibernate深入理解----03Session缓存核心方法(save()和persist(),get()和load(),update()和saveOrUpdate,delete()和evil()

参考代码下载github:https://github.com/changwensir/java-ee/tree/master/hibernate4 一、持久化对象的状态 1).临时对象(Trans...

Hibernate的save、persist、update、merge和saveOrUpdate

原文地址:http://www.baeldung.com/hibernate-save-persist-update-merge-saveorupdate。 1.介绍 在这篇文章中,我们将讨论se...

Hibernate用于测试refresh的方法、get和load的区别、测试persist和save的区别

package com.eduask.test; import java.util.Date; import java.util.List; import org.hibernate.Crite...

hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等

hibernate的保存 hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别: 一、预备知识: 在所有之前,说明一下,对于hibernate,它的对象有...
  • hjtk009
  • hjtk009
  • 2013年07月10日 15:42
  • 211

Hibernate三种状态(Transient、Persistent、Detached)各种保存(save,persist,update,saveOrUpdte,merge,flush,lock)区别

一、三种状态(Transient、Persistent、Detached) 在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这些概...

hibernate save和update以及saveOrUpdate区别

save()方法很显然是执行保存操作的,如果是对一个新的刚new出来的对象进行保存,自然要使用这个方法了,数据库中没有这个对象。 update()如果是对一个已经存在的托管对象进行更新那么肯定是...

hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等

hibernate的保存 hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别: 一、预备知识: 在所有之前,说明一下,对于hibernate,它的对象有...

Hibernate三种状态(Transient、Persistent、Detached)各种保存(save,persist,update,saveOrUpdte,merge,flush,lock)区别

一、三种状态(Transient、Persistent、Detached)     在Hibernate中有三种状态,对它的深入理解,才能更好的理解hibernate的运行机理,刚开始不太注意这...
  • shen516
  • shen516
  • 2013年04月10日 09:54
  • 489

hibernate中的persist() 和 save() 区别

persist() 和 save() 区别 @sunRainAmazing Session 的 save() 方法使一个临时对象转变为持久化对象Session 的 save() 方法完成以下操作:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate中save、saveorupdate、persist方法的区别
举报原因:
原因补充:

(最多只允许输入30个字)