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

討論Hibernate和模型對象

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

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

OpenCore是在OSGi規范上構建的微內核(Microkenerl),基于純組件(Pure Plugin)開放源碼企業應用軟件平臺。

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

模型對象(Domain Objects)插件

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

Eclipse-BuddyPolicy與Eclipse-RegisterBuddy方式

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

具體做法如下:

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

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

Eclipse Extension Point方式

這是我們目前實現的方式,通過標準的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內部的類加載機制實在無法令人滿意,盡管我們在這種方式中已經加載所有的模型類對象,但Hibernate內部仍然會調用Class.forName()去試圖加載。

【編輯推薦】

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

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-01 09:21:23

Hadoop分布式文件系統OpenStack

2012-02-08 14:24:35

HibernateJava

2009-09-23 10:14:10

Hibernate使用

2009-09-29 10:46:58

Hibernate領域

2009-09-25 13:14:58

Hibernate C

2009-09-23 13:26:10

Hibernate對象

2023-05-31 08:41:23

分層架構對象模型

2009-09-24 15:42:44

Hibernate對象

2009-09-23 10:41:10

對象標識符Hibernate

2009-09-25 10:38:42

Hibernate動態

2009-09-25 14:41:15

Hibernate對象

2012-02-08 12:17:38

HibernateJava

2009-09-29 16:11:45

Hibernate實現

2009-09-24 17:28:29

Hibernate S

2009-06-30 16:41:12

Hibernate的事

2009-06-18 13:29:05

Hibernate下載Hibernate安裝

2012-07-30 08:31:08

Storm數據流
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品自在在线观看 | 精品一区二区电影 | 日韩中字幕 | 久久久久久免费毛片精品 | 免费一区二区 | 请别相信他免费喜剧电影在线观看 | 中文字幕日韩在线观看 | 久久婷婷国产麻豆91 | 久久精品99 | 香蕉视频1024 | 亚洲综合二区 | 日韩成人高清在线 | 免费黄色的视频 | 亚洲国产精品久久久久 | 久久精品久久久久久 | 午夜免费福利片 | 欧美一级欧美三级在线观看 | 日韩中文字幕一区 | 亚洲综合在线一区二区 | 久久亚洲春色中文字幕久久久 | 伊人网在线综合 | 午夜视频在线免费观看 | 精品麻豆剧传媒av国产九九九 | 成人在线观看亚洲 | 九九热这里只有精品6 | 成人在线视频网站 | 国产精品视频一区二区三区不卡 | 成人一区精品 | 成人精品一区二区三区 | 荷兰欧美一级毛片 | 日韩国产欧美在线观看 | 777777777亚洲妇女| 在线视频一区二区三区 | 久久成人国产精品 | 国产成人免费视频网站视频社区 | 国产精品视频网 | 91精品国产乱码久久久久久久久 | 欧美一区二区在线视频 | 亚洲国产网 | 一区二区成人在线 | 亚洲国产成人精品女人久久久 |