entityManager 的 merge/refresh/flush 方法
2015-06-25 10:45
337 查看
理解eneityManager的这三个方法的作用和区别,首先需要分清楚PersistenceContext 和 EntityManager.
PersistenceContext:是entity的一个实例。
EntityManager:是和PersistenceContext联系在一起的,被用来创建、删除或者查找一个持久化Entity实例。
换句话来说PersistenceContext可以说成是数据库的缓存。
1.merge
通过entityManager将一个存在的实体“同步到”persistenceContext中。
实体的状态将从其单独的状态转换为受persistenceContext管理的状态。
如果Entity是新创建的,则这个方法类似于persist()这个方法。
如果Entity已经存在的,则只作为更新操作。
2.Flush
将PersistenceContext的信息同步到数据库中。
当触发Flush这个动作的时候,所有的实体都将会被insert/update/remove到数据库中。
数据库不会触发Commit的操作。
3.Refresh
Refresh的作用是从数据库中将Entity的状态进行更新操作。如果Entity和数据库中的数据不一致,将更新数据库中的数据到Entity中。
PersistenceContext:是entity的一个实例。
EntityManager:是和PersistenceContext联系在一起的,被用来创建、删除或者查找一个持久化Entity实例。
换句话来说PersistenceContext可以说成是数据库的缓存。
1.merge
通过entityManager将一个存在的实体“同步到”persistenceContext中。
实体的状态将从其单独的状态转换为受persistenceContext管理的状态。
如果Entity是新创建的,则这个方法类似于persist()这个方法。
如果Entity已经存在的,则只作为更新操作。
2.Flush
将PersistenceContext的信息同步到数据库中。
当触发Flush这个动作的时候,所有的实体都将会被insert/update/remove到数据库中。
数据库不会触发Commit的操作。
3.Refresh
Refresh的作用是从数据库中将Entity的状态进行更新操作。如果Entity和数据库中的数据不一致,将更新数据库中的数据到Entity中。
相关文章推荐
- Task.Run Vs Task.Factory.StartNew
- 数据统计存储过程规范(mysql)
- ASP.NET常被忽视的一些细节
- Ubuntu 14.10 编译 qt4.8.6
- Sublime Text 3 支持的热门插件推荐
- JS快速获取图片宽高的方法
- PL/SQL客户端连Oracle很快就断开问题的解决
- linux下tomcat启动时,项目部署三次
- TCP/IP协议详解卷1--第一章概述--读书笔记
- 线程延时操作的实现
- PHP下编码转换函数mb_convert_encoding与iconv区别
- overload , override 和 overwrite
- Android使用Handler造成的内存泄露问题的解决
- Objective-C中,重写init方法为什么要self = [super init]?
- 汇编语言学习笔记(7)——更灵活地定位内存
- 博客开篇第一篇--资深前端工程师
- 第一天来到博客园~
- Maven的生命周期
- TCP/IP协议详解概述
- Linux提权后获取敏感信息方法