程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 在Weblogic 8.1上配置Hibernate 3.0

在Weblogic 8.1上配置Hibernate 3.0

編輯:關於JAVA

下面是在WebLogic 8.1上配置Hibernate的具體步驟:

◆首先要創建一個域。我創建了一個WebLogic Workshop(WLW)域,因為我打算使用WLW來創建和實現應用程序。

◆將hibernate...\lib\antlr-2.7.5H3.jar添加到PRE_CLASSPATH,或者在hibernate.cfg.xml文件中將query.factory_class屬性設為user 2.x's query factory。

◆WLW域還啟動了一個PointBase數據庫實例。我將使用這個內置實例。我創建了一個新的用戶和模式。並為該模式填充了一些示例數據。

◆在服務器實例中配置連接池和數據源。

◆創建應用程序。我打算使用WebLogic Workshop創建。

◆應該將庫(jar文件)(它們是成功運行Hibernate所必需的)放在哪裡呢?放在應用程序的APP-INF/lib文件夾中。庫包括hibernate.jar和附加的第三方庫。引用Hibernate Reference的表格3-1。

◆在WLW中創建一個Java項目。該Java項目包括映射到數據庫的域類。WLW編譯該項目,並將生成的jar文件放到APP-INF/lib目錄下。在Java項目中編碼域類。創建Hibernate映射文件和Hibernate配置文件。此外,從Hibernate Reference復制實現,創建HibenateUtil類。Hibernate配置文件包括數據源的JNDI名。

◆創建一個EJB對象(例如,一個模塊)。該項目包含了會話bean。編寫一個操縱域類的會話bean。

◆創建一個Web或Web Service項目(例如,一個模塊)。該項目包含了可互操作性地測試會話bean的組件。

完整、有效、自包含的示例應用程序在此。其中包括了模式和所有的Hibernate配置文件。

我在上面描述了在WebLogic 8.1上配置Hibernate 3.0的具體步驟。下面將介紹高級配置,其中Hibernate使用了WebLogic的Java命名和目錄接口(Java Naming and Directory Interface,JNDI)、Java事務API(Java Transaction API,JTA)、Java連接器架構(Java Connector Architecture,JCA)和Java管理擴展(Java Management extension,JMX)實現。

我們先從JNDI開始。通過在hibernate.cfg.xml文件中命名SessionFactory,Hibernate使SessionFactory在JNDI中可用。呀!這在WebLogic中不起作用。正如此處所描述的,WebLogic JNDI與Hibernate配合得不是很好。有多個工作區。工作區手動將SessionFactory綁定到JNDI中,方法是通過WebLogic startup類或者啟動servlet。但是,我不能使SessionFactory實例從JNDI安全返回。因此,折衷一下,為SessionFactory向HibernateUtil實用類添加一個存取器。

為了配置Hibernate使用JTA,我在hibernate.cfg.xml文件中配置了transaction.factory_class。有兩個選項:org.hibernate.transaction.JTATransactionFactory和org.hibernate.transaction.CMTTransactionFactory。說明文檔建議,對Bean托管事務界定(Bean Managed Transaction Demarcation,BMTD)bean使用JTATransactionFactory,而對容器托管事務界定(Container Managed Transaction Demarcation,CMTD)bean使用CMTTransactionFactory。

JTATransactionFactory似乎更通用些,它既支持BMTD bean又支持CMTD bean。因此,我配置的是JTATransactionFactory。此外,為了以特定於容器的方式查找事務,我在hibernate.cfg.xml文件中配置了transaction.manager_lookup_class。借助於這個配置,我完全不需要使用HibernateTransaction API。

對Hibernate的JCA支持是實驗性質的,目前還沒有全面應用於WebLogic。我可以設想,以後Hibernate會被打包為Resource ARchive(RAR)文件。Hibernate RAR文件作為資源適配器部署。適配器使Session在JNDI中可用。所有的配置元素都是通過資源適配器(xml文件)配置的,而不是通過hibernate.cfg.xml文件或采用其他方法配置。為什麼在WebLogic中要配置Hibernate使用JCA?JCA旨在封裝傳統系統的連接、事務等等,並使它們在J2EE中可用。但是,由於Hibernate,傳統的資源適配器的優勢不能全面體現。一旦Hibernate被配置為資源適配器,特定的應用程序與Hibernate的耦合就被削弱了。多個不同的應用程序可以使用同一個Hibernate資源適配器。由於當前正在開發的EJB 3.0,這種配置在EJB的持久性API、Hibernate和Java數據對象(Java Data Object,JDO)的標准化方面的優勢更為明顯。從理論上講,可以熱部署(或重部署)適配器和改變持久性實現。

Hibernate附帶JMX Management Bean (MBean)實現。我不知道如何使用JMX將Hibernate部署到WebLogic上。Hibernate和WebLogic使用JMX有什麼好處?至少有兩條。一條是部署和重部署。更重要的一條是,可以監控Hibernate和獲得的統計信息。從JMX控制台進行運行時監控是所部署的應用程序運行良好的基本保障。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved