如何解决 hibernate 自动更新实体类的问题

如何解决 hibernate 自动更新实体类的问题

ID:83374844

大小:543.06 KB

页数:5页

时间:2023-07-15

上传者:无敌小子
如何解决 hibernate 自动更新实体类的问题_第1页
如何解决 hibernate 自动更新实体类的问题_第2页
如何解决 hibernate 自动更新实体类的问题_第3页
如何解决 hibernate 自动更新实体类的问题_第4页
如何解决 hibernate 自动更新实体类的问题_第5页
资源描述:

《如何解决 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;i

446.}47.returnfalse;48.}49.});so.}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭