session中持久化对象的相关状态转换和相关注解的使用

session的merge()方法可将程序对脱管对象所做的修改保存到数据库,但merge()于update()方法的最大区别:merge()方法不会持久化给定的对象,只返回对象的副本,该副本处于持久化状态,使用mergen()方法来保存程序对脱管对象所做的修改时,如果session中存在相同持久化标识的持久化对象,merge()方法里提供的对象状态将覆盖原有的持久化实例。

在session中使用LockOptions对象锁

News n = Session.get(News.class,pk,LockOptions.UPGRADE);

Sesson.LockRequest的lock()方法也将某个脱管对象重新持久化,但脱管对象也必须是没有修改过的

//简单重新持久化

session.buildLockRequest(LockOptions.NONE).locki(news);

//先检查持久化对象的版本,然后重新持久化该对象

session.buildLockRequest(LockOptions.READ).lock(person);

//先检查持久化对象的版本,然后使用SELECT ... FOR UPDATE重新持久化该对象

session.buildLockRequest(new LockOptins(LockMode.PESSMISTIC_WRITE)).lock(teacher);

相关注解的使用

原文地址:https://www.cnblogs.com/sundaysjava/p/10325856.html

时间: 2024-08-01 17:41:27

session中持久化对象的相关状态转换和相关注解的使用的相关文章

hibernate中持久化对象的生命周期(三态:自由态,持久态,游离态 之间的转换)

三态的基本概念: 1,  暂时状态(Transient):也叫自由态,仅仅存在于内存中,而在数据库中没有对应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫暂时对象: 2,  持久化状态(Persistent):与session关联而且在数据库中有对应数据.已经持久化,添?到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3,  游离状态(Detached):持久化对象脱离了Session的对象.如Session缓

hibernate中持久化对象的生命周期(转载)

三态的基本概念 1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据.用new创建的对象,它没有持久化,没有处于Session中,处于此状态的对象叫临时对象: 2, 持久化状态(Persistent):与session关联并且在数据库中有相应数据.已经持久化,加入到了Session缓存中.如通过hibernate语句保存的对象.处于此状态的对象叫持久对象: 3, 游离状态(Detached):持久化对象脱离了Session的对象.如Session缓存被清空的

hibernate持久化对象三种状态及其转换

持久化类类三种状态介绍1. 瞬时态:也叫做临时态或自由态,它一般指我们 new 出来的对象,它不存在 OID, 与 hibernate session 无关联,在数据库中也无记录.它使用完成后,会被 jvm 直接 回收掉,它只是用于信息携带.简单说:无 OID 与数据库中的信息无关联,不在 session 管理范围内.2. 持久态:在 hibernate session 管理范围内,它具有持久化标识 OID 它的特点,在事 务未提交前一直是持久态,当它发生改变时, hibernate 是可以检测

jpa持久化对象四种状态

自己理解,不完全正确,大致如下: 例:某实体类   Person(int id,string name,int age);   id 为主键. 新建:new Person(),  并且未给 id 赋值: 游离:new Person(),  并且给 id 赋值:或者数据库获取的Person 类实例,然后关闭了session: 持久化:从数据库获取的Person 类实例: 删除:删除持久化的对象: 上面游离状态的对象  进行 persist  会报 detach xxx 错误(也有可能是 flush

当保存在Session中的对象,取出后,在外部发生改变时会怎样

return_reason_model model = new return_reason_model(); model.F_RetunrnReason = "1"; HttpContext.Session["Return"] = model; model.F_RetunrnReason = "2"; return_reason_model model2 = HttpContext.Session["Return"] as r

js中json对象和字符串的转换

JSON.parse() : 字符串-->json对象 1 var str = '{"name":"huangxiaojian","age":"23"}'//单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常. 2 JSON.parse(str) 3 结果: 4 Object 5 age: "23" 6 name: "huangxiaojian" 7 __proto__:

网页相关状态编码(相关错误提示)

在写页面时可能会遇到的常见问题 1xx-信息提示这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个1xx响应. 100-继续.101-切换协议. 2xx-成功这类状态代码表明服务器成功地接受了客户端请求.200-确定.客户端请求已成功.(重点)201-已创建.202-已接受.203-非权威性信息.204-无内容.205-重置内容.206-部分内容. 3xx-重定向客户端浏览器必须采取更多操作来实现请求.例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该

Hibernate 持久化对象的状态

持久化对象有3种状态:1.持久化状态      2.临时状态      3.游离状态 Session 的特定方法能使对象从一个状态转换到另一个状态临时对象(transient)•    在使用代理主键的情况下, OID 通常为 null•    不处于 Session 的缓存中•    在数据库中没有对应的记录 持久化对象(也叫”托管”)(Persist)•    OID 不为 null•    位于 Session 缓存中•    持久化对象和数据库中的相关记录对应•    Session 在

Hibernate持久化对象状态

在Hibernate中,持久化对象再被操作过程中分为三个时期.这三个时期和session周期相关. 分别是瞬时(Transient),持久太(persistent)和游离态(Detached) 瞬时状态 由new命令开辟内存的java对象.例如:Student stu= newStudent();若没有变量对他引用,则被jvm回收.瞬时对象在内存中孤立存在,他的意义仅是携带信息的载体,不和数据库中的数据有任何的关联.通过session的save()和saveOrUpdate()方法可以把一个瞬时