成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

討論Hibernate和模型對象

開發(fā) 后端
這里介紹Hibernate和模型對象,OpenCore數(shù)據(jù)層實現(xiàn)OSGi上集成Hibernate,Hibernate及其依賴庫作為一個單獨的插件,這樣帶來一個問題。

學(xué)習(xí)Hibernate時,經(jīng)常會遇到一些小問題,這里將介OSGi平臺的插件類加載機制使得Hibernate無法正確加載分布在不同插件內(nèi)部的模型對象與O/R映射文件問題的解決方法。

OpenCore是在OSGi規(guī)范上構(gòu)建的微內(nèi)核(Microkenerl),基于純組件(Pure Plugin)開放源碼企業(yè)應(yīng)用軟件平臺。

OpenCore數(shù)據(jù)層實現(xiàn)OSGi上集成Hibernate,Hibernate及其依賴庫作為一個單獨的插件,這樣帶來一個問題,就是OSGi平臺的插件類加載機制使得Hibernate無法正確加載分布在不同插件內(nèi)部的模型對象與O/R映射文件。本文討論解決方案:

模型對象(Domain Objects)插件

模型對象(Domain Objects)集中到獨立的插件(Bundle)內(nèi),Hibernate插件依賴這些模型對象插件。這是最簡單的,也是比較糟糕的方式,比較小的基于OSGi的項目可以這也作做。

Eclipse-BuddyPolicy與Eclipse-RegisterBuddy方式

Equinox(Eclipse提供的OSGi實現(xiàn))平臺特有的方式,允許插件(Bundle)聲明自己的伙伴,讓“伙伴插件”來動態(tài)加載本插件的類,這也是Hiberate與Equinox集成的官方解決方案。這種方式模型對象無需部署在單獨的插件內(nèi),與業(yè)務(wù)插件部署在一起即可,Hibernate插件也無須依賴模型對象。

具體做法如下:

首先,Hibernate插件(名稱,例如org.opengoss.orm.hibernate)聲明自身可以作為伙伴插件,自描述文件(MANIFEST.MF) 加入描述:Eclipse-BuddyPolicy: registered

然后,模型對象的業(yè)務(wù)插件中把Hibernate插件加入為伙伴,自描述文件(MANIFEST.MF) 加入描述:Eclipse-RegisterBuddy:org.opengoss.orm.hibernate

Eclipse Extension Point方式

這是我們目前實現(xiàn)的方式,通過標準的Eclipse擴展點與擴展機制,我們在Hibernate插件中plugin.xml配置文件中聲明下述擴展點,在模型對象插件中聲明擴展,例如:

Hibernate插件的啟動中,用代碼配置生成SessionFactory,代碼如下: 

  1. public void start(BundleContext context) throws Exception {   
  2. Configuration configuration = new Configuration().configure
    (new File ("./etc/org.opengoss.database.hibernate/hibernate.cfg.xml"));   
  3. Class[] domainClasses = getDomainClasses();   
  4. for (Class domainClass : domainClasses) {   
  5. configuration.addClass(domainClass);   
  6. }   
  7. sessionFactory = configuration.buildSessionFactory();   
  8. Dictionarynew Hashtable props.put("scope", "APPLICATION");   
  9. props.put("uid", "Hibernate:SessionFactory");   
  10. registration = context.registerService
    (SessionFactory.class.getName(), sessionFactory, props);  
  11. }   
  12. private Class[] getDomainClasses() throws Exception {   
  13. List domainClasses = new ArrayList();   
  14. IExtensionPoint point = registry.getExtensionPoint
    (IConstants.DOMAIN_OBJECT_EXTENSION_POINT);   
  15. IExtension[] extensions = point.getExtensions();   
  16. for (IExtension extension : extensions) {  
  17. IConfigurationElement[] elements = extension.getConfigurationElements();   
  18. for (IConfigurationElement configurationElement : elements) {   
  19. Bundle bundle = pluginContext.getBundleBySymbolId
    (extension.getNamespaceIdentifier());   
  20. Class domainClass = bundle.loadClass
    (configurationElement.getAttribute("class"));   
  21. domainClasses.add(domainClass);   
  22. }   
  23. }   
  24. return domainClasses.toArray(new Class[domainClasses.size()]);   
  25. }  

注意:Hibernate內(nèi)部的類加載機制實在無法令人滿意,盡管我們在這種方式中已經(jīng)加載所有的模型類對象,但Hibernate內(nèi)部仍然會調(diào)用Class.forName()去試圖加載。

【編輯推薦】

  1. Hibernate可行性全面概括
  2. Hibernate Sequence基礎(chǔ)描述
  3. 淺析Hibernate使用EhCache
  4. Hibernate的一級Cache
  5. Hibernate update淺談
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-09-22 15:33:34

Hibernate U

2009-09-24 09:52:20

Spring Hibe

2012-05-30 15:03:43

ibmdw

2012-02-08 14:24:35

HibernateJava

2012-02-01 09:21:23

Hadoop分布式文件系統(tǒng)OpenStack

2009-09-29 10:46:58

Hibernate領(lǐng)域

2009-09-25 13:14:58

Hibernate C

2009-09-23 10:14:10

Hibernate使用

2023-05-31 08:41:23

分層架構(gòu)對象模型

2009-09-23 13:26:10

Hibernate對象

2009-09-25 14:41:15

Hibernate對象

2012-02-08 12:17:38

HibernateJava

2009-09-29 16:11:45

Hibernate實現(xiàn)

2009-09-25 10:38:42

Hibernate動態(tài)

2009-09-24 15:42:44

Hibernate對象

2009-09-23 10:41:10

對象標識符Hibernate

2009-06-18 13:29:05

Hibernate下載Hibernate安裝

2009-06-26 16:31:50

區(qū)分不同對象Hibernate

2009-06-17 15:06:50

Hibernate實體

2012-02-08 14:01:18

HibernateJava
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日日操夜夜操天天操 | 欧美视频第二页 | 欧美精品首页 | 爱爱视频在线观看 | 国产毛片久久久久久久久春天 | 国产精品视频播放 | 中文字幕一区二区三区四区 | 欧美xxxx黑人又粗又长 | 免费毛片网站 | 国产高清视频在线观看播放 | jizz18国产 | 亚洲欧美综合精品另类天天更新 | 日韩国产专区 | 超碰在线观看97 | 精品国产乱码久久久久久中文 | 国产成人免费网站 | 国产亚洲精品久久久久动 | 中文字幕亚洲一区 | 久久久久国产精品免费免费搜索 | 欧美激情精品久久久久久 | 国产专区在线 | 一级毛片免费 | 最新国产精品精品视频 | 久久精品免费 | 伊人手机在线视频 | 综合久久久| 欧美一级片在线观看 | 色爱av| 免费成人av网站 | 亚洲国产看片 | 日本在线视频一区二区 | 久久精品高清视频 | 日韩一区二区三区在线观看视频 | 久久99深爱久久99精品 | 免费1区2区3区 | 国产在线一区二区 | 在线一区视频 | 午夜影视大全 | 免费av一区二区三区 | 国产美女永久免费无遮挡 | 久久久久免费 |