国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

從Hibernate2到3移植的兩點(diǎn)初體驗(yàn)

2019-11-18 12:59:13
字體:
供稿:網(wǎng)友

  H3提供了很多令人興奮的特性,從RC1提供download開始便在機(jī)器上創(chuàng)建了新的H3test PRoject,由于時間問題,H3的E文doc也只看到第五章節(jié)(都是打印A4紙閱讀的,飯前廁中枕邊 苦~),而且一直到前天才開始正式代碼移植...
  
  這兩天感受并不多,本來沒想發(fā)到javaeye,但是關(guān)于H3的lazy機(jī)制,覺得還是有點(diǎn)費(fèi)解,并不是機(jī)制本身,而是其進(jìn)行如此大的變動的目的
  
  從H2到H3,在下目前接觸到的只有兩點(diǎn)比較重要(包名更改比較輕易,批量替換吧):
  1.session interface API的變更 find/iterate 等一些method在H3中已經(jīng)不再支持 但是在org.hibernate.classic.Session這個接口還是為用戶提供了以上的method,但是我想classic也不是長久之策,呵呵,以Gavin的觀點(diǎn),所有的query操作,createQuery()才是王道
  
  2.Lazy機(jī)制,這個就比較迷茫的...
  看看測試代碼先
  java代碼:
  
  
  HBM文件:
  <hibernate-mapping package="h3test.example.db.PO">
  <class name="UserPO" table="users" >
  <id name="id"
  type="long"
  column="ID">
  <generator class="increment"/>
  </id>
  
  <property name="name" type="string"/>
  <property name="nickname" type="string"/>
  <property name="vip" column="isVIP" type="boolean"/>
  </class>
  </hibernate-mapping>
  
  代碼
  UserPO u=(UserPO)op.getSession().load(UserPO.class,new Long(3));
  op.close();
  System.out.println(u.getName());
  
  以上代碼在H3會得到LazyInitializationException錯誤,也就是說,在H3里,session.close()之前,假如未對PO進(jìn)行操作,那么PO實(shí)際上只是proxy,It's so interesting,由于沒有對H3有很深的理解,在下花了很長時間,最后在hibernate的論壇中找到了以上答案,對于H3為什么采用這種新的Lazy機(jī)制,目前
  
  還不敢亂下結(jié)論 但看到Gavin 對用戶釋疑時這樣說:
  
  Stop arguing with me, and obey the migration guide!
  
  想來應(yīng)該有一定道理的(還是文檔看的少,時間啊時間- -!)
  
  也許你還是懷念H2中的一次性load出PO而不是proxy,那么在hbm文件中的class 中聲明lazy="false"來實(shí)現(xiàn),請注重這是H3中新的屬性設(shè)置,而且它的默認(rèn)值是"lazy="true"";或者采用控制session生命周期的方法,把它交給filter來控制,兩種方法只是個人拙見,希望各位指正
  
  嗯,關(guān)于Lazy問題在Hibernate官方論壇的帖子
  http://forum.hibernate.org/viewtopic.php?t=939532&postdays=0&postorder=asc&start=0
  
  Hibernate3 Migration Guide 持續(xù)更新的,H2->H3用戶必看,可惜為什么等我都找到答案才發(fā)現(xiàn)這個頁面呢?sigh
  http://www.hibernate.org/Documentation/Hibernate3MigrationGuide#A7

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 榆树市| 乾安县| 鄯善县| 五华县| 玉屏| 娄底市| 临邑县| 融水| 慈溪市| 南宫市| 阆中市| 防城港市| 阿拉善右旗| 霍山县| 南乐县| 兴业县| 泸州市| 永顺县| 富裕县| 彭阳县| 宜州市| 吉林市| 溆浦县| 磐石市| 江门市| 句容市| 务川| 玉田县| 慈溪市| 溆浦县| 白朗县| 依兰县| 永川市| 滕州市| 平远县| 渑池县| 南皮县| 静宁县| 金阳县| 马鞍山市| 广南县|