java 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
其它网友的解释:
save方法
保存持久化对象时,该方法返回该持久化对象的标识属性值(即主键)。
该方法会立即将持久化对象的对应数据插入数据库。
persist方法
该方法没有返回任何值。
保证当它在一个事务外部被调用时,并不立即转换为insert语句。
适用于长会话流程。
- Java的Hibernate框架中的继承映射学习教程
- Java的Hibernate框架中复合主键映射的创建和使用教程
- Java的Hibernate框架结合MySQL的入门学习教程
- 深入解析Java的Hibernate框架中的持久对象
- Java的Hibernate框架中的基本映射用法讲解
- Java Hibernate中使用HQL语句进行数据库查询的要点解析
- Java的Hibernate框架中一对多的单向和双向关联映射
- Java的Hibernate框架中的双向主键关联与双向外键关联
- 详解Java的Hibernate框架中的Interceptor和Collection
- 浅析Java的Hibernate框架中的继承关系设计
- 简介Java的Hibernate框架中的Session和持久化类
- Java的Hibernate框架中的组合映射学习教程
相关文章
Spring MVC学习之DispatcherServlet请求处理详析
这篇文章主要给大家介绍了关于Spring MVC学习教程之DispatcherServlet请求处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2018-11-11
最新评论