日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

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

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

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

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

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

Hibernate默認工作在普通POJO模式。你可以使用配置選項default_entity_mode, 對特定的SessionFactory,設(shè)置一個默認的實體表示模式。 (參見表 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.     

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

在使用dynamic-map為SessionFactory 設(shè)置了默認的實體模式之后,可以在運行期使用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ī)格化和合理化,并允許稍后在此之上添加合適的領(lǐng)域模型實現(xiàn)。

實體表示模式也能在每個Session的基礎(chǔ)上設(shè)置:

 
 
 
  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連接,事務(wù),和其他的上下文信 息。這意味著,你不需要在第二個Session中調(diào)用 flush()和close(),同樣的,把事務(wù)和連接的處理 交給原來的工作單元。

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


新聞名稱:Hibernate動態(tài)模型(Dynamicmodels)詳解
網(wǎng)頁網(wǎng)址:http://www.5511xx.com/article/cciiiod.html