博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate save()与persist()区别
阅读量:7153 次
发布时间:2019-06-29

本文共 590 字,大约阅读时间需要 1 分钟。

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

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

主要内容区别:

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

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

转载于:https://www.cnblogs.com/08love125/articles/6123577.html

你可能感兴趣的文章
微信小程序拼团后端接口设计规范.V2
查看>>
Python学习之路26-函数装饰器和闭包
查看>>
从单向到双向数据绑定
查看>>
关于跨域的what,why,how
查看>>
k8s :kube-apiserver 启动流程 - 2
查看>>
不使用任何额外变量判断回文数字
查看>>
配置永久生效(登陆shell和非登陆shell)、I/O重定向、Here Docunmet 此处文档、管道、tee...
查看>>
PHP设计模式- Decorator 装饰器模式
查看>>
密码提示强弱的正则表达式
查看>>
惨遭红帽弃用,MongoDB要凉凉了吗?
查看>>
停止过度设计,开发客户需要的软件
查看>>
混沌实践访谈:混沌工程和系统可观测性密不可分
查看>>
量子计算竞速时代,如何拨动时间的指针
查看>>
Gremlin发布混沌工程实验平台免费版,开放了“故障即服务”功能
查看>>
构建一个运行在Azure虚拟机上的MySQL Spring Boot应用程序
查看>>
面试算法实践与国外大厂习题指南
查看>>
新的UWP和Win32应用程序分发模型
查看>>
对自组织的实验
查看>>
微软宣布Azure Migrate和Site Recovery服务增强功能
查看>>
Nexus指南已经发布
查看>>