




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何解决hibernate自动更新实体类的问题
如何解决hibernate自动更新实体类的问题
示例:
Java代码佥
1.GrabOrdergrabOrder=(GrabOrder)this.grabOrderDao.getCurrentSess
ion().get(GrabOrder.class,grabOrderid);
2.grabOrder.setNickname(TimeHWUtil.getCurrentDateTime());
上述代码会执行两条SQL:
查询和更新
为什么会更新呢?我明明没有调用DAO的update方法啊!!!
但是这里我调用了实体类的setter方法,
hibernate有一个机制Hibernatedirty-checks,会同步session缓存和数据库的数
据
如何解决自动更新的问题:
方案一:把实体类由持久态变为脱管态(游离态)
Java代码佥
1.this.grabOrderDao.getCurrentSession().evict(grabOrder);
缺点懒加载的对象无法加载,因为此时session相当千close了
而且会报错org.hibernate.LazylnitializationException:couldnotinitializeproxy-no
Session
报错的代码:
Java代码佥
1.this.grabOrderDao.getCurrentSession().clear();
2.System.out.println(grabOrder.getHouseinfo().getHouseOwner
().getid());
更好的操作步骤.
(1)先把要访问的属性加载出来,可以通过提前使用,或者Hibernate.initialize(dept)
(2)再调用evict方法或clear方法
什么叫提前仗用呢?即提前调用getter方法
正确
Java代码佥
1.System.out.println(grabOrder.getHouselnfo().getHouseOwner().getld
());
2.this.grabOrderDao.getCurrentSession().clear();
3.System.out.println(grabOrder.getHouseinfo().getHouseOwner
().getid());
方案二:把实体类变为只读
Java代码佥
1.this.grabOrderDao.setReadOnly(grabOrder,readonly);
但是这招不是万灵药,有例外:
Unidirectionalone-to-manyandmany-to-many
Hibernatetreatsunidirectionalone-to-manyandmany-to-many
associationsownedbyaread-onlyentitythesameaswhen
ownedbyanentitythatisnotread-only.
修改单向的对多和多对多的成员变盘时,依然会触发hibernate的自动更新.
有什么万全之策呢?
(a)采用读写分离把操作放在只读的数据库连接中
(b)采用只读事务
当方法名是updateTestLa芍时会自动更新
但是我修改方法名为9etTestL釭y时,就不会自动更新了
为什么呢?看看spring事务配置
个`VIII•IIV口3匕·U丿上口y上-:1vu,uuv·,,个·',`\••II尸ll=^=`.......""\ti....,.....`
*com.hhouse.ujiayigou.service.,*·*(..))11execution(public
*com.house.ujiayigou.timer.pojo.*·*(..))11execution(public
*oa.dao.responsibility.·*·*(..))IIexecu扛on(public
*oa.web.controller.responsibility..*·*(..))11execu扛on(public
*mon.dao.generic..*,*(,,))"/>
<aop:advisorpointcut-ref="bussinessService"advice-ref="txAdvice"/>
</aop:config>I
<aop:aspectj..:'autoproxyproxy-target-class="true"/>
<tx:adviceid="txAdvice"transaction-manager="txManager">
<tx:attributes>
<tx:methodnam+“qet*”lead-only=''true”/>只读
<tx:methodname="query*"read-only="true"/>
<tx:methodname="build*"read-only="true"/>
<tx:methodname="count*"read-only="true"/>
<tx:methodname="find*"read-only="true"/>
<tx:methodname="test*"read-only="true"/>
<tx:methodname="is*"read-only="true"/>
<tx:methodname="show*"read-only="true"/>
<tx:methodname="convert*"read-only="true"/>
<tx:methodname="delete*"propagation="REQUIRED"/>
<tx:method
::::::比$~:i::::::工f*;$$;:!$芷I1五茹霖甘忱:/>
<tx:methodname="add*"propagation="REQUIRED"/>
-.十V•...^+K^,,...-...^一”^,,;+心”.....^...-“~+;^...一”0cn11T0cn11,....
只读的对象不保险,所以我们使用只读的事务或只读的数据库连接.
如何解决json序列化时,自动加载lazy对象导致对象多层嵌套的问题?
使用Sill\l\pleBea八Pr-ope叨Filter过滤不需要的字段
Java代码佥
1./***
2.
3.*@paramxpath:参考www.rodl/kunlunsoft/util/objectxpa
th/ObjectXpath.java
4.*@return
5.*/
6.publicStringtoJson(Stringcolumn,String...xpath){
7.if(this.result==null){//modifiedbyhuangweii@2015-0
8-17
8.System.out.println("this.resultisnull");
9.}else{
10.if(this.result!=false){
11.//this.errorMessage=null;
12.this.setErrorMessage(null);
13.}
14.
15.}
16.if(ValueWidget.isNullOrEmpty(xpath)
17.11ValueWidget.isNullOrEmpty(xpath[0])){
18.returnHWJacksonUtils.getJsonP(this);
19.}
20.
21.//finalObjectXpathoxp=newObjectXpath(www.482223.co
m);
22.intlength=xpath.length;
23.IIfinalObject[]filterObjects=newObject[length];
24.ListfilterObjList=newArraylist();
25.for(inti=0;i<length;i++){
26.Objecto=XPathPcess(this.getValue(),xpath
[i]);
27.if(oinstanceofList){
28.filterObjList.addAll((List)o);
29.}else{
30.filterObjList.add(o);
}
31.
32.//filterObjects[i]=o;
33.}
34.finalObject[]filterObjects=filterObjlist.toArray();
35.returnHWJacksonUtils.getJsonP(this,newDefaultJsonFilte
rDecide(){
36.@Override
37.publicbooleanisFilteColumn(Objectpo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校生物室管理制度
- 学生会设备管理制度
- 学生项目部管理制度
- 安保部综合管理制度
- 安全管理与管理制度
- 定向井公司管理制度
- 实训室水电管理制度
- 客户保证金管理制度
- 客运包车牌管理制度
- 家装业务员管理制度
- 《分子动力学模拟》课件
- 新生儿重症监护病房捐赠人乳应用与管理专家共识(2025)解读
- 皮肤科进修心得分享
- 2025年上半年广东省广州市白云区委宣传部政府雇员招聘5人重点基础提升(共500题)附带答案详解
- 项目经理讲安全课件
- 《休闲农业》课件 项目二 休闲农业分类及模式分析
- 2025年安徽省省情试题及答案
- 2025年消控室考核试题及答案
- 江西省吉安市遂川县2024-2025学年数学三下期末达标检测试题含解析
- 卫健系统2025年上半年安全生产工作总结
- 第一章体育与健康基础知识 第一节 科学发展体能 课件 2024-2025学年人教版初中体育与健康八年级全一册
评论
0/150
提交评论