<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    寫程序,做產品,過日子

    成功其實很簡單,就是強迫自己堅持下去

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      69 Posts :: 1 Stories :: 92 Comments :: 0 Trackbacks

    一直以為,在Hiberenate中用多對一關系表達外鍵,并設置為延遲加載時,Hibernate不會在查主表時去查引用表。今天的測試卻發現不是這么回事。

    我定義了一個Topic類,其中有一個外鍵引用Company類:

    ?

    < many-to-one? name ="company" ?class ="Company" ?lazy ="no-proxy" >
    < column? name ="COMPANY" ?length ="32" ? />
    </ many-to-one >

    ?

    測試HQL如下:select id, company from Topic

    而我期望的SQL應當是這樣:select boid, company from DT_TOPIC.

    結果Hiberate Tools 生成的SQL是這樣:

    ?

    select
    topic0_.BOID?
    as ?col_0_0_,
    topic0_.COMPANY?
    as ?col_1_0_,
    company1_.COMPID?
    as ?COMPID409_,
    company1_.COMPNAME?
    as ?COMPNAME409_,
    company1_.DESCRIPTION?
    as ?DESCRIPT3_409_,
    company1_.STATUS?
    as ?STATUS409_?
    from
    DT_TOPIC?topic0_?
    inner ? join
    XPC_COMPANY?company1_?
    on ?topic0_.COMPANY = company1_.COMPID

    ?

    Hibernate生成的SQL多做了兩件影響性能的事情:

    1, 與XPC_COMPANY進行inner join。

    2,把XPC_COMPANY中的所有字段全取出來了。

    這樣還叫什么延遲加載啊?

    ?

    哪位高手能告訴我這是為什么?

    posted on 2007-01-17 21:54 Welkin Hu 閱讀(3023) 評論(4)  編輯  收藏 所屬分類: Java

    Feedback

    # re: Hibernate的多對一關系是如何延遲加載的? 2007-01-18 09:59 小雪飛刀
    當然不會延遲了!
    您的lazy ="no-proxy"
    <many-to-one>默認的屬性是lazy="proxy",此時默認是會延遲加載的。而在指定了lazy="true"之后,必須要經過運行期字節碼增加,延遲加載才有效果。  回復  更多評論
      

    # re: Hibernate的多對一關系是如何延遲加載的? 2007-01-18 10:06 小雪飛刀
    而對于<one-to-one>的情況,延遲加載還要受到constrained屬性的影響。如果當constrained="true",lazy="proxy"(默認),是可以延遲加載的。因為constrained="false"時表明實體和被關聯到的實體的約束不是強制的,這時在查詢實體時,Hibernate總會檢查<one-to-one>所關聯的實體是否存在,就把one-to-one關聯的實體查詢出來了,所以constrained需要設為"true"。
      回復  更多評論
      

    # re: Hibernate的多對一關系是如何延遲加載的? 2007-01-18 10:35 Welkin Hu
    我用的是Hibernate 3.2.1,在Many-to-one中的Lazy只能取proxy, no-proxy, false,沒有true。
    上面三種Lazy方法我都試過,結果是一樣的。
    在Hibernate3.2.1參考文檔中是這樣解釋的。
    lazy (optional - defaults to proxy): By default, single point associations are proxied. lazy="no-proxy"
    specifies that the property should be fetched lazily when the instance variable is first accessed (requires
    build-time bytecode instrumentation). lazy="false" specifies that the association will always be eagerly
    fetched.
    按這個解釋,no-proxy也是延遲加載啊。  回復  更多評論
      

    # re: Hibernate的多對一關系是如何延遲加載的? 2007-01-22 09:19 Welkin Hu
    前天按Hibernate 3.2.1 reference book,玩通了上面說的build-time bytecode instrumentation,并且設置lazy="proxy",引用表端也設置了lazy="true",最終生成的SQL還是老樣子!
    只有兩種情況在例外,無論做不做instrumentation:
    1,只有from,沒有select子句。
    2, 使用select company.id代替select company。  回復  更多評論
      

    主站蜘蛛池模板: 亚洲精品无码鲁网中文电影| 国产亚洲情侣一区二区无| 亚洲美女自拍视频| 在线看片免费人成视频播| 亚洲日本va在线视频观看| 亚洲免费在线观看| 国产亚洲精品成人AA片新蒲金| 男女一进一出抽搐免费视频| 亚洲aⅴ无码专区在线观看春色 | 爱丫爱丫影院在线观看免费| 亚洲精品国产高清嫩草影院| 一个人看的www免费高清| 亚洲国产免费综合| 最近免费字幕中文大全| 亚洲av无码不卡| **毛片免费观看久久精品| 亚洲伊人久久大香线蕉影院| 成人无遮挡毛片免费看| 小说专区亚洲春色校园| 国产亚洲精品无码拍拍拍色欲| a级毛片视频免费观看| 337p日本欧洲亚洲大胆精品555588 | 国产又大又黑又粗免费视频| 久久亚洲精品高潮综合色a片| 亚洲成年人啊啊aa在线观看| a级毛片无码免费真人久久| 亚洲第一精品福利| 成人毛片视频免费网站观看| 添bbb免费观看高清视频| 国产日韩亚洲大尺度高清| 国产1000部成人免费视频| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲国产精品久久久久久| 国产日本一线在线观看免费| 高潮毛片无遮挡高清免费| 亚洲无线电影官网| 国产黄色片在线免费观看| 免费看黄的成人APP| 亚洲熟女精品中文字幕| 亚洲色精品88色婷婷七月丁香| 99久久久国产精品免费无卡顿 |