程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 整合Hibernate3與JBOSS 3.2.X

整合Hibernate3與JBOSS 3.2.X

編輯:JAVA編程入門知識

      前言――強強聯合 在J2EE應用服務器領域,JBoss是發展最為迅速的應用服務器。由於JBoss遵循商業友好的LGPL授權分發,並且由開源社區開發,這使得JBoss廣為流行。另外,JBoss應用服務器還具有許多優秀的特質。其一,它將具有革命性的JMX微內核服務作為其總線結構;其二,它本身就是面向服務的架構(Service-Oriented Architecture,SOA);其三,它還具有統一的類裝載器,從而能夠實現應用的熱部署和熱卸載能力。因此,它是高度模塊化的和松耦合的。JBoss用戶的積極反饋告訴我們,JBoss應用服務器是健壯的、高質量的,而且還具有良好的性能,2002年JBOSS獲得了最佳應用服務器稱號。

      Entity Bean的效率問題一直是J2EE開發中爭議熱點,近年來,Hibernate已經成為了事實上的持久化引擎。最新版的JBoss應用服務器已經將Hibernate集成為JMX MBean服務。這使得用戶能夠在應用服務器環境中直接使用Hibernate,而不管它是否處於J2EE上下文中。JBOSS 4.0中已經融入了Hibernate作為對象持久化的基礎。

      對於大量采用JBOSS 3.2.x的用戶,如何將Hibernate3加入到JBOSS中,以便使用JBOSS的連接池,支持JBOSS的BMT和CMT事務。下文將具體將Hibernate3加入到JBOSS 3.2.x的實現步驟。

      操作步驟

      JBOSS是以JMX為微內核的,各種功能和服務都有MBean提供,同時Hibernate提供了對MBean接口的實現org.hibernate.jmx.HibernateService.所以我們可以很方便的將持久化類打包成Mbean,部署到JBOSS中,以下是具體步驟:

      1.  將Hibernate3.jar及Hibernate用到的其他庫文件一同拷貝至相應的JBOSS路徑下(如:jboss-3.2.1serverdefaultlib)。

      2.  為了將我們編寫的持久化治理類,加入到JBOSS中,我們必須將他封裝成Mbean形式,以便被JMX加載。

      如同實現一般的Mbean一樣需要編寫jboss-service.XML文件,文件內容如下:

      <server>

      <mbean code="org.hibernate.jmx.HibernateService"
  name="jboss.jca:service=HibernateFactory,name=HibernateFactory">

      <depends>jboss.jca:service=RARDeployer</depends>

      <depends>jboss.jca:service=LocalTxCM,name=YourDataSource</depends>

      <attribute name="MapResources">mappings/Yourmapping.hbm.xml</attribute>

      <attribute name="JndiName">Java:/YourJNIDName</attribute>

      <attribute name="Datasource">YourDataSourceJNIDName </attribute>

      <attribute name="Dialect">org.hibernate.dialect.SQLServerDialect</attribute>

      <attribute name="TransactionStrategy">org.hibernate.transaction.JTATransactionFactory</attribute>

      <attribute name="TransactionManagerLookupStrategy">
  org.hibernate.transaction.JBossTransactionManagerLookup</attribute>

      <attribute name="UserTransactionName">UserTransaction</attribute>

      </mbean>

      </server>

      注釋:

      <depends>元素表示該Mbean依靠的服務,其中需要將YourDataSource替換實際應用中使用的數據源的名稱。

      <attribute>元素對Mbean中的屬性進行了配置,其中

      MapResource指定了持久化類的映射文件,將其替換為實際的映射文件名。

      JndiName指定的是所用到的數據源的JNDI名,將其替換為實際的數據源JNDI名稱。

      Dialect同樣根據使用的數庫類型不同,進行相應的替換。

      TransactionStrategy,在你的Session Bean使用BMT的時候應該配置為org.hibernate.transaction.JTATransactionFactory,而當你的Session Bean使用CMT的時候應該配置為org.hibernate.transaction.CMTTransactionFactory.

      Mbean是一種jar文件(但其後綴不是jar,而是sar),以下是要創建的sar包的內部結構。

      YourClasses(持久化類及輔助類)

      mappings/ Yourmapping.hbm.xml

      META-INF/joss-service.xml

      3         在Session Bean中調用持久化對象

      …

      private javax.ejb.SessionContext _ctx;

      public void setSessionContext(javax.ejb.SessionContext ctx)

      {

      _ctx=ctx;

      }

      …

      {

      try {

      InitialContext ctx = null;

      ctx = new InitialContext();

      SessionFactory jtaf = (SessionFactory)ctx.lookup(jndiName);

      Session session=jtaf.openSession();

      //Transaction tx = sessio

      UserTransaction tx=_ctx.getUserTransaction();

      tx.begin();

      Book book = new Book();

      book.setId(111);

      book.setBook_name("JBOSS&Hibernate");

      book.setPrice(111f);

      session.save(book);

      tx.rollback();

      session.close();

      }
  
 

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