欢迎来到天天文库
浏览记录
ID:83374844
大小:543.06 KB
页数:5页
时间:2023-07-15
《如何解决 hibernate 自动更新实体类的问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
如何解决hibernate自动更新实体类的问题如何解决hibernate自动更新实体类的问题示例:Java代码佥1.GrabOrdergrabOrder=(GrabOrder)this.grabOrderDao.getCurrentSession().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-noSession报错的代码:Java代码佥1.this.grabOrderDao.getCurrentSession().clear();2.System.out.println(grabOrder.getHouseinfo().getHouseOwner().getid());更好的操作步骤.(1)先把要访问的属性加载出来,可以通过提前使用,或者Hibernate.initialize(dept)(2)再调用evict方法或clear方法什么叫提前仗用呢?即提前调用getter方法正确Java代码佥
11.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-manyHibernatetreatsunidirectionalone-to-manyandmany-to-manyassociationsownedbyaread-onlyentitythesameaswhenownedbyanentitythatisnotread-only.修改单向的对多和多对多的成员变盘时,依然会触发hibernate的自动更新.有什么万全之策呢?(a)采用读写分离把操作放在只读的数据库连接中(b)采用只读事务当方法名是updateTestLa芍时会自动更新但是我修改方法名为9etTestL釭y时,就不会自动更新了为什么呢?看看spring事务配置
2个`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*com.common.dao.generic..*,*(,,))"/>I-.十V•...^+K^,,...-...^一”^,,;+心”.....^...-“~+;^...一”0cn11T0cn11,....只读的对象不保险,所以我们使用只读的事务或只读的数据库连接.如何解决json序列化时,自动加载lazy对象导致对象多层嵌套的问题?使用Sill\l\pleBea八Pr-ope叨Filter过滤不需要的字段Java代码佥1./***2.3.*@paramxpath:参考www.rodlg.com/kunlunsoft/util/objectxpath/ObjectXpath.java4.*@return5.*/6.publicStringtoJson(Stringcolumn,String...xpath){7.if(this.result==null){//modifiedbyhuangweii@2015-08-17
38.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.com);22.intlength=xpath.length;23.IIfinalObject[]filterObjects=newObject[length];24.ListfilterObjList=newArraylist();25.for(inti=0;i446.}47.returnfalse;48.}49.});so.}
446.}47.returnfalse;48.}49.});so.}
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处