博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中操作managed/persistent状态的Entity对象使之成为detached状态的Entity对象
阅读量:4178 次
发布时间:2019-05-26

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

Hibernate中处于managed/persistent状态的Entity对象,通过持久化上下文(如Session或EntityManager)能够自动关联到数据库中的对象。这样,在Hibernate应用中对managed/persistent状态的Entity对象的操作将会同步到数据库中。

但是,当需要批量修改大量Entity对象时,这种对各个Entity对象的自动同步将会造成数据库性能压力。为此,可以使managed/persistent状态的Entity对象转变为detached状态的Entity对象,从而避免自动同步。这样,在Hibernate应用需要的时候再明确调用saveOrUpdate()或update()方法实现数据的再次同步。

使managed/persistent状态的Entity对象转变为detached状态的Entity对象,可以对Entity对象执行evict()操作(对于Session)或detach()操作(对于EntityManager),示例如下。

对于Hibernate的Native API,示例如下:

Session session = entityManager.unwrap( Session.class );for(Person person : (List
) session.createQuery("select p from Person p").list()) { dtos.add(toDTO(person)); session.evict( person );}
对于Hibernate的JPA API,示例如下:

for(Person person : entityManager.createQuery("select p from Person p", Person.class)        .getResultList()) {    dtos.add(toDTO(person));    entityManager.detach( person );}
如果要将持久化上下文(如Session或EntityManager)中的所有Entity对象都转换为detached状态,则还可以对
Session或EntityManager执行clear()操作。

对于Hibernate的Native API,示例如下:

session.clear();
对于Hibernate的JPA API,示例如下:

entityManager.clear();

转载地址:http://iilai.baihongyu.com/

你可能感兴趣的文章
豆瓣爱问共享资料插件发布啦
查看>>
Ubuntu10.10 CAJView安装 读取nh\kdh\caj文件 成功
查看>>
kermit的安装和配置
查看>>
vim 配置
查看>>
openocd zylin
查看>>
进程创建时文件系统处理
查看>>
内核线程创建
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
C++程序员技术需求规划(发展方向)
查看>>
JNI
查看>>
蓝桥杯2018省赛 - A3 乘积尾零
查看>>
蓝桥杯2018省赛 - A4 第几个幸运数
查看>>
命令窗口中javac(即javac.exe)不可用的原因
查看>>
【算法概论】分治算法:计算数组中的逆序对
查看>>
android数据存储与访问之使用pull解析器
查看>>
Android 短信模块分析(七) MMS数据库定义及结构整理
查看>>
Android 短信模块分析(八) MMS数据库表关系
查看>>
Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
查看>>