博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中处于detached状态的Entity对象的再次同步
阅读量:4178 次
发布时间:2019-05-26

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

在Hibernate应用中,处于detached状态的Entity对象,是指那些在数据库中有对应的记录,但是由于持久化上下文关闭close(),或持久化上下文清空clear(),或者被持久化上下文删除evict(),而导致与持久化上下文不再关联的Entity对象。

处于detached状态的Entity对象,虽然在Hibernate应用中仍然可以对其进行操作,但是这些操作的结果无法自动同步存储到数据库中。

在JPA API中,处于detached状态的Entity对象无法再与数据库进行同步。

但是,在Hibernate的Native API中,Hibernate提供了如下几种方法,可以将处于detached状态的Entity对象再次与持久化上下文Session关联,从而可以将对Entity对象的修改同步保存到数据库中:

1. Session的lock()方法

Person person = session.byId( Person.class ).load( personId );//Clear the Session so the person entity becomes detachedsession.clear();person.setName( "Mr. John Doe" );session.lock( person, LockMode.NONE );

2. Session的saveOrUpdate()方法(此处等价于update()方法)

Person person = session.byId( Person.class ).load( personId );//Clear the Session so the person entity becomes detachedsession.clear();person.setName( "Mr. John Doe" );session.saveOrUpdate( person );

3. Session的update()方法(此处等价于saveOrUpdate()方法)

Person person = session.byId( Person.class ).load( personId );//Clear the Session so the person entity becomes detachedsession.clear();person.setName( "Mr. John Doe" );session.update( person );

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

你可能感兴趣的文章
错误: 隐式声明函数‘kmalloc’ [-Werror=implicit-function-declaration]
查看>>
error: two or more data types in declaration specifiers原因及解决方法
查看>>
Linux驱动基础开发2
查看>>
ioctl在socket中的一些用法及示例
查看>>
Linux设备驱动--块设备(二)之相关结构体
查看>>
Linux设备驱动--块设备(四)之“自造请求”
查看>>
Nand Flash和Nor Flash相关知识
查看>>
NAND flash和NOR flash的区别
查看>>
writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
查看>>
NOR Flash擦写和原理分析
查看>>
51单片机程序执行流程(STARTUP.A51)
查看>>
原码, 反码, 补码 详解
查看>>
Java自学第一阶段(二)- 小试牛刀
查看>>
Java自学第一阶段(三)- 万能的变量
查看>>
Java自学第一阶段(四)-万能的变量(2)
查看>>
HashMap存储原理以及与hashcode、equals方法的关系
查看>>
python3.6在windows下安装scrapy遇到的问题总结
查看>>
pycharm中打开scrapy项目,import scrapy报错问题
查看>>
scrapy爬取图片,自定义图片下载路径和图片名称
查看>>
python3下import MySQLdb出错问题
查看>>