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

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

hot3.png

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

这里给出一个明确的区分。

主要内容区别: 

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

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

转载于:https://my.oschina.net/liuyuantao/blog/750853

你可能感兴趣的文章
互联网时代大数据的核心价值
查看>>
安全报告显示2015年DDoS攻击强度创下新纪录
查看>>
智慧城市“双引擎”:城市创新活力与市民宜居体验
查看>>
外汇呼叫中心如何在严格监管中存续
查看>>
安全攻防之SQL注入
查看>>
OssImport系列之四——最佳实践
查看>>
BurpSuite实例教程讲解
查看>>
《精通Python网络爬虫:核心技术、框架与项目实战》——1.3 网络爬虫的组成...
查看>>
命令行是你的至交好友
查看>>
Android镜像文件的拆解
查看>>
Structured Streaming Programming Guide
查看>>
Python之数据聚合与分组运算
查看>>
2015级C++第14周程序阅读 STL中的简单容器和迭代器
查看>>
ECS服务器集群
查看>>
android Handler机制之ThreadLocal详解
查看>>
netty tcp 字节有序->对象有序
查看>>
Factory模式与Prototype模式的异同
查看>>
解析LayoutSubviews
查看>>
[翻译] ASCScreenBrightnessDetector
查看>>
Android 自定义ProgressDialog
查看>>