posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          hibernate 查詢語句總結(jié)

          Posted on 2007-12-10 12:52 G_G 閱讀(1289) 評論(0)  編輯  收藏 所屬分類: hibernate
          表關(guān)系 T1oo ->ont-to-many-> T2oo (t1oo.id-t2oo.aid)

          1.單條select延遲加載
          ????????Iterator?it?=?session.createQuery("from?T1oo?").iterate();
          ????????
          while(it.hasNext()){
          ????????????T1oo?t1?
          =?(T1oo)it.next();
          ????????????t1.getName();
          ????????}
          /*運(yùn)行語句?n+1
          這就只加載 id
          Hibernate:?select?t1oo0_.id?as?col_0_0_?from?t1oo t1oo0_
          此是在 t1.getName(); 延遲加載的
          Hibernate:?select?t1oo0_.id?as?id0_,?t1oo0_.name?as?name0_0_?from?t1oo?t1oo0_?where?t1oo0_.id=?
          Hibernate:?select?t1oo0_.id?as?id0_,?t1oo0_.name?as?name0_0_?from?t1oo?t1oo0_?where?t1oo0_.id=?
          */

          2.級連查詢:
          1)set排序? <set ... order-by="avg desc" ...> 從大到小
          2)batch-size="10" 用法是
          ??? select * from t2oo? where aid in (?,?,?....)
          3)

          如果想忽略延遲,并有一定邏輯全部加載,這有兩中解決辦法:
          1).內(nèi)連
          mysql>?select???*
          ????
          ->?from?t1oo?t1oo0_?inner?join?t2oo?t2ooset1_?on?t1oo0_.id=t2ooset1_.aid;
          +----+-----------+----+-----+------+---------+
          | id | name????? | id | avg | aid? | version |
          +----+-----------+----+-----+------+---------+
          |? 1 | liukaiyi? |? 1 |? 23 |??? 1 |?????? 1 |
          |? 1 | liukaiyi? |? 2 |? 24 |??? 1 |?????? 1 |
          |? 1 | liukaiyi? |? 3 |? 25 |??? 1 |?????? 1 |
          |? 2 | liukaiyi2 |? 4 |? 26 |??? 2 |?????? 0 |
          +----+-----------+----+-----+------+---------+

          ?
          ? ? ? ? Iterator?it?=?new?HashSet(session.createQuery("from?T1oo?t1?inner?join?fetch?t1.t2ooSet?t2where t2.id<=3").list()).iterator();
          ????????
          while(it.hasNext()){
          ????????????T1oo?t1?
          =?(T1oo)it.next();
          ????????????System.out.println(t1.getName());
          ????????????
          ????????????
          for(Iterator?itr=t1.getT2ooSet().iterator();itr.hasNext();?){
          ????????????????T2oo?t2?
          =?(T2oo)itr.next();
          ????????????????System.out.println(
          "??"+?t2.getAvg()?);
          ????????????}
          ????????}
          結(jié)果是:
          Hibernate:?select?t1oo0_.id?as?id0_,?t2ooset1_.id?as?id1_,?t1oo0_.name?as?name0_0_,?t2ooset1_.version?as?version1_1_,?t2ooset1_.avg?as?avg1_1_,?t2ooset1_.aid?as?aid1_1_,?t2ooset1_.aid?as?aid0__,?t2ooset1_.id?as?id0__?from?t1oo?t1oo0_?inner?join?t2oo?t2ooset1_?on?t1oo0_.id=t2ooset1_.aid?where?t2ooset1_.id<=3
          liukaiyi
          ??
          24
          ??
          23
          ??
          25

          主站蜘蛛池模板: 北碚区| 白水县| 城固县| 东平县| 淳安县| 青铜峡市| 东辽县| 裕民县| 扎赉特旗| 华容县| 中山市| 筠连县| 友谊县| 兴城市| 敦煌市| 桐柏县| 东丽区| 婺源县| 屯门区| 朔州市| 成武县| 景洪市| 吉木萨尔县| 马龙县| 清水县| 滦南县| 康平县| 五大连池市| 五华县| 万宁市| 文山县| 临颍县| 肇州县| 五原县| 武宁县| 哈尔滨市| 高要市| 涡阳县| 邢台县| 赤水市| 海阳市|