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】Hibernate中save、persist和saveOrUpdate有何不同?

http://javarevisited.blogspot.tw/2012/09/difference-hibernate-save-vs-persist-and-saveOrUpdate.html ...
  • vking_wang
  • vking_wang
  • 2013年05月22日 15:13
  • 12409

Hibernate save, saveOrUpdate, persist, merge, update 区别

Hibernate Save hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思。我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的...
  • iamiwangbo
  • iamiwangbo
  • 2016年09月12日 11:00
  • 1061

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

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

Hibernate的save、persist、update、merge和saveOrUpdate

原文地址:http://www.baeldung.com/hibernate-save-persist-update-merge-saveorupdate。 1.介绍 在这篇文章中,我们将讨论se...
  • chaiyu2002
  • chaiyu2002
  • 2017年01月05日 12:41
  • 875

浅谈hibernate save和saveOrUpdate区别

Hibernate的对象有3种状态,分别为:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object...
  • o9109003234
  • o9109003234
  • 2014年03月28日 16:09
  • 6528

Hibernate save()与persist()区别

本文章来给各位同学介绍一下Hibernate save()与persist()区别,希望此文章能对各位同学对于Hibernate save()与persist()有所理解。 Hibern...
  • u010739551
  • u010739551
  • 2015年08月03日 11:39
  • 6190

关于hibernate的save方法和persist方法的区别

save : 在事务里执行到save,会向数据库插一条数据,如果事务里异常,会回滚,删除数据库中插入的数据。 persist:在事务里执行到persist,不会向数据库插数据,事务commi...
  • xiatianlong_xtl
  • xiatianlong_xtl
  • 2017年02月12日 21:33
  • 352

浅谈hibernate save ,update 和 saveOrUpdate的区别

最近由于工作的需要使用批量插入数据,如果使用SQL语句构造,有两种方式:1、一个一个执行,2、构造很长的SQL语句然后一次性执行 先来说一下这种方式的缺点:1、构造SQL语句麻烦,容易出现问题,如果...
  • u012251421
  • u012251421
  • 2014年12月10日 15:23
  • 3317

Hibernate 中的save和persist方法之间的区别

save方法 保存持久化对象时,该方法返回该持久化对象的标识属性值(即主键)。 该方法会立即将持久化对象的对应数据插入数据库。 persist方法 该方法没有返回任何值...
  • lisq037
  • lisq037
  • 2013年06月06日 14:52
  • 3487

hibernate中save,update,saveOrUpdate的用法和区别

在讨论hibernate中save,update,saveOrUpdate的用法和区别之前我们先要了解PO的3种状态: 1、未被持久化的VO  此时就是一个内存对象VO,由JVM管理生命周期 ...
  • wufaliang003
  • wufaliang003
  • 2017年06月30日 14:46
  • 1300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate中save、saveorupdate、persist方法的区别
举报原因:
原因补充:

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