日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Hibernate動態(tài)模型(Dynamicmodels)詳解

本文向大家介紹Hibernate動態(tài)模型(Dynamic models),可能好多人還不了解Hibernate動態(tài)模型(Dynamic models),沒有關系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

成都創(chuàng)新互聯(lián)是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設公司,自成立以來公司不斷探索創(chuàng)新,始終堅持為客戶提供滿意周到的服務,在本地打下了良好的口碑,在過去的10年時間我們累計服務了上千家以及全國政企客戶,如生料攪拌車等企業(yè)單位,完善的項目管理流程,嚴格把控項目進度與質(zhì)量監(jiān)控加上過硬的技術(shù)實力獲得客戶的一致稱譽。

Hibernate動態(tài)模型(Dynamic models)

注意:以下特性在當前處于試驗階段,將來可能會有變化。

運行期的持久化實體沒有必要一定表示為像POJO類或JavaBean對象那樣的形式。Hibernate也支持動態(tài)模型(在運行期使用Map的Map)和象DOM4J的樹模型那樣的實體表示。使用這種方法,你不用寫持久化類,只寫映射文件就行了。

Hibernate默認工作在普通POJO模式。你可以使用配置選項default_entity_mode, 對特定的SessionFactory,設置一個默認的實體表示模式。 (參見表 3.3 “ Hibernate配置屬性 ”。)

下面是用Map來表示的例子。首先,在映射文件中,要聲明 entity-name來代替一個類名(或作為一種附屬)。

 
 
 
  1.      entity-name="Customer">
  2.          name="id"
  3.             type="long"
  4.             column="ID">
  5.              class="sequence"/>
  6.         
  7.          name="name"
  8.             column="NAME"
  9.             type="string"/>
  10.          name="address"
  11.             column="ADDRESS"
  12.             type="string"/>
  13.          name="organization"
  14.             column="ORGANIZATION_ID"
  15.             class="Organization"/>
  16.          name="orders"
  17.             inverse="true"
  18.             lazy="false"
  19.             cascade="all">
  20.              column="CUSTOMER_ID"/>
  21.              class="Order"/>
  22.         
  23.     
  24.     

注意:雖然是用目標類名來聲明關聯(lián)的,但是關聯(lián)的目標類型除了是POJO之外,也可以 是一個動態(tài)的實體。

在使用dynamic-map為SessionFactory 設置了默認的實體模式之后,可以在運行期使用Map的 Map。

 
 
 
  1. Session s = openSession();
  2. Transaction tx = s.beginTransaction();
  3. Session s = openSession();
  4. // Create a customer
  5. Map david = new HashMap();
  6. david.put("name", "David");
  7. // Create an organization
  8. Map foobar = new HashMap();
  9. foobar.put("name", "Foobar Inc.");
  10. // Link both
  11. david.put("organization", foobar);
  12. // Save both
  13. s.save("Customer", david);
  14. s.save("Organization", foobar);
  15. tx.commit();
  16. s.close();

動態(tài)映射的好處是,變化所需要的時間少了,因為原型不需要實現(xiàn)實體類。然而,你無法進行 編譯期的類型檢查,并可能由此會處理很多的運行期異常。幸虧有了Hibernate映射,它使得數(shù) 據(jù)庫的schema能容易的規(guī)格化和合理化,并允許稍后在此之上添加合適的領域模型實現(xiàn)。

實體表示模式也能在每個Session的基礎上設置:

 
 
 
  1. Session dynamicSession = pojoSession.getSession(EntityMode.MAP);
  2. // Create a customer
  3. Map david = new HashMap();
  4. david.put("name", "David");
  5. dynamicSession.save("Customer", david);
  6. ...
  7. dynamicSession.flush();
  8. dynamicSession.close()
  9. ...
  10. // Continue on pojoSession

請注意:用EntityMode調(diào)用getSession()是在 Session的API中,而不是SessionFactory。 這樣,新的Session共享底層的JDBC連接,事務,和其他的上下文信 息。這意味著,你不需要在第二個Session中調(diào)用 flush()和close(),同樣的,把事務和連接的處理 交給原來的工作單元。

關于XML表示能力的更多信息在XML映射中找到,這里我們就不加以介紹了。


網(wǎng)頁題目:Hibernate動態(tài)模型(Dynamicmodels)詳解
網(wǎng)頁URL:http://www.dlmjj.cn/article/cciiiod.html