教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 Hibernate save()与persist()区别

Hibernate save()与persist()区别

发布时间:2016-11-29   编辑:jiaochengji.com
教程集为您提供Hibernate save()与persist()区别等资源,欢迎您收藏本站,我们将为您提供最新的Hibernate save()与persist()区别资源
本文章来给各位同学介绍一下Hibernate save()与persist()区别,希望此文章能对各位同学对于Hibernate save()与persist()有所理解。

Hibernate 之所以提供与save()功能几乎完全类似的persist()方法,一方面是为了照顾JPA的用法习惯。另一方面,save()和 persist()方法还有一个区别:使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值);但使用 persist() 方法来保存持久化对象时,该方法没有任何返回值。因为 save() 方法需要立即返回持久化对象的标识属性,所以程序执行 save() 会立即将持久化对象对应的数据插入数据库;而 persist() 则保证当它在一个事物外部被调用时,并不立即转换成 insert 语句, 这个功能是很有用的,尤其当我们封装一个长会话流程的时候,persist() 方法就显得尤为重要了。


这里给出一个明确的区分。(可以跟进src看一下,虽然实现步骤类似,但是还是有细微的差别)

主要内容区别:
1,persist把一个瞬态的实例持久化,但是并"不保证"标识符(identifier主键对应的属性)被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时候。

2,save, 把一个瞬态的实例持久化标识符,及时的产生,它要返回标识符,所以它会立即执行Sql insert

您可能感兴趣的文章:
Hibernate save()与persist()区别
Hibernate含List属性的持久化类的CRUD操作范例
java中Hibernate session在service实现事务getCurrentSession()和openSession()区别
Hibernate下数据批量处理解决方案
mysql substr()函数简介
使用MiddleGen 产生hibernate的数据库表映射文件
java中Hibernate多对多双向关联的配置
Hibernate单向1-1含连接表映射实例详解
Hibernate/Spring初配置方法详解
Java中Hibernate单向(1-N)映射实例详解

[关闭]
~ ~