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

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

1,persist把一个瞬态的实例持久化,但是并"不保证"标识符(identifier主键对应的属性)被立刻填入到持久化实例中,标识符的填入可能被推迟到flush的时候。
2,save, 把一个瞬态的实例持久化标识符,及时的产生,它要返回标识符,所以它会立即执行Sql insert。

最新文章

  1. 看看C# 6.0中那些语法糖都干了些什么(中篇)
  2. python浅谈正则的常用方法
  3. Jsonp原理就是这么简单
  4. angularjs之插件ngRoute和ngAnimate
  5. SAP数据更新的触发
  6. uva562 Dividing coins 01背包
  7. Perfect Squares——Leetcode
  8. UWP APP 开发日记
  9. JVM的内存区域划分划分及作用
  10. Smarty属性
  11. 在 iOS 10.0 之后, App 要调用手机相机与相簿应注意的事项
  12. sqlite3使用事务处理[zz]
  13. Cent Linux启动tomcat慢的问题
  14. HDU 2680 Choose the best route 最短路问题
  15. mysql使用sql语句查询数据库所有表注释已经表字段注释
  16. nuget包循环引用问题
  17. humid vs wet vs moist
  18. 向第一个 p 元素添加一个类
  19. 【linux】Crontab 定时任务 使用实例
  20. 【CODEVS】1022 覆盖

热门文章

  1. 利用Pycharm部署同步更新Django项目文件
  2. 微信小程序开发(八)获取手机ip地址
  3. 【cli命令集】
  4. java--mybatis的实现原理
  5. MySQL JSON类型
  6. CF901C Bipartite Segments[点双+二分+前缀优化]
  7. VUE:Select2
  8. 初入SG-UAP
  9. 一个参数既可以是const还可以是volatile
  10. DockerAPI版本不匹配的问题