首先声明,本人菜鸟,望大家探讨,共同进步。
先看列子:
Preson 主键id,而且在数据库自动生成策略。其他字段均可为空,本次讨论中使用firstname字段修改。
xml配置均使用hibernate默认配置,参数均无修改。
1.正常由transient->persistent
public void test1(){
Person p = new Person();//transient
p.setFirstname("harrison");
Session session = SessionFactory.getSession();
session.beginTransaction();
session.save(p);//Persistent
session.getTransaction().commit();
session.close();
}
console
Hibernate: insert into Person (age, firstname, lastname) values (?, ?, ?)
数据库保存ok
2.正常由persistent->detached->persistent,修改刚插入的数据
public void test2(){
Session session = SessionFactory.getSession();
session.beginTransaction();
Person p = (Person)session.get(Person.class, 1L);//Persistent
session.getTransaction().commit();
session.close();
p.setFirstname("second");//Detached
session = SessionFactory.getSession();
session.beginTransaction();
session.update(p);//Persistent again
session.getTransaction().commit();
session.close();
}
console:
Hibernate: select person0_.PERSON_ID as PERSON1_2_0_, person0_.age as age2_0_, person0_.firstname as firstname2_0_, person0_.lastname as lastname2_0_ from Person person0_ where person0_.PERSON_ID=?
Hibernate: update Person set age=?, firstname=?, lastname=? where PERSON_ID=?
数据库更新ok
3.把transient当作detached用
public void test3(){
Person p = new Person();//transient
p.setId(1L);
p.setFirstname("third");
Session session = SessionFactory.getSession();
session.beginTransaction();
session.update(p);//Persistent
session.getTransaction().commit();
session.close();
}
console:
Hibernate: update Person set age=?, firstname=?, lastname=? where PERSON_ID=?
数据库更新成功
相信大家也看明白了,脱管状态的object,再次重新连接session和transient状态的对象没有区别,他们都是游离的状态,和session没有关系了,他们的区别是在业务的逻辑上,与存在的道理是没有区别的。
如果由兴趣的朋友可以继续研究下,当new 一个person是在数据库主键相同的对象,hibernate虽然执行了insert语句,但是并没有成功,也没有异常,同样把datached状态的对象修改以后,如果不用update而使用insert方法,也就是把这个object当作transient来处理的时候,hiberntae也同样执行了insert语句,但是数据库也没有发生变化,也没有异常。如此可见,transient和detanched的存在方式是相同的。
分享到:
相关推荐
ANSYS动力学瞬态分析--缩减法 缩减法通过采用主自由度及缩减矩阵压缩问题规模。在主自由度处的位移被计算出来后,ANSYS可将解扩展到原有的完整自由度集上。
完全法采用完整的系统矩阵计算瞬态响应(没有矩阵缩减)。它是三种方法中功能最强的,允许包括各类非线性特性(塑性、大变形、大应变等)。
瞬态 - 系列阻尼响应 - MATLAB/SIMULINK 中的过、欠、临界阻尼响应
热传导一共三种形式,一种是导热,对流和辐射。 本word通过两个实例才演示一下计算过程。 该部分内容主要包含两个算例: 1-多层材料的稳态导入计算 2-瞬态的热计算
ANSYS转子动力学--转子系统启动时的瞬态动力学分析--源文件
CST MWS里面瞬态求解器的设置-accuracy的设置 (1)一般的理论验证或者仿真将其设置为多少?-30dB (2)如果是做一些实际的产品,又设置为多少?-60dB (3)还是根据具体的模型或产品要求,自己选择适当的档,怎么...
采用MATLAB Simulink的液压管路瞬态压力脉动分析.pdf
行业资料-电子功用-抑制瞬态高压的电感性X射线管
导热反问题求解T型管内壁瞬态温度,卢涛,李春永,本文构建了一种基于已知T型管道外壁面瞬时温度,反演管道内壁面瞬态温度的导热反问题数学模型和求解方法。利用有限单元法对管道�
“压力管道中瞬态波传播的不确定性量化和整体灵敏度分析”手稿中使用了30种瞬态数据
实现ansys apdl悬臂梁的瞬态分析命令流
热分析教程瞬态热分析。讲解详细适合用于入门选手
电子政务-基于PMOS管的直流瞬态浪涌电压抑制电路.zip
采用MATLAB Simulink的液压管路瞬态压力脉动分析
瞬态荧光寿命和瞬态吸收基本原理
电容器组切换模型用于模拟由电容器组通电引起的电压振荡瞬态,用于电力系统中的功率因数校正。 ...
介绍了本人自研的电机二维电磁瞬态场-路耦合仿真软件simag3.0的使用教程。使用本软件可以进行:(1)任意类型电机、任意拓扑电路的二维瞬态电磁场-路耦合仿真(永久免费);(2)Yamazaki的PWM线电压电压供电下瞬态...
变量的分离允许确定管道中的瞬态速度分布。 本程序计算贝塞尔函数的零点并绘制管道流的瞬态速度分布图。
瞬态噪声分析方法,学习吧,cadence
瞬态抑制二极管是否可以用稳压二极管替代?