Eclipse+JBoss+Mysql開發EJB3.0EntityBean

來源:互聯網
上載者:User

        開發工具:Eclipse Java EE IDE for WebDevelopers,JBoss 5.1.0.GA,Mysql 5.0.22

        EJB(Enterprise JavaBean)有3種,Session Bean、Message Bean和Entity Bean。其中Session Bean又分為有狀態的會話Bean(Stateful Session Bean)和無狀態的會話Bean(Stateless Session Bean)。

        這裡重點要說的是實體Bean。

        實體Bean,看名字就可以猜到了這是一個ORM,對於已學過Hibernate的童鞋來說,接受起來實體Bean還是很輕鬆的,而且在事務方面,EJB3發布了JPA規範,也使得只要遵守JTA進行實體的編寫,那麼這些實體就具備了跨架構的可移植性。這個的實現,也是由於EJB3比EJB2的進步之處,採用了POJO(對EJB2隻是知道開發起來很麻煩,沒有詳細研究過)。

        如果將Hibernate與EJB3.0進行對比,你會發現Session和EntityManager、SessionFactory和PersistenceContext有這異曲同工之妙,由於特殊原因,我先學習了EJB後學的Hibernate,由於EJB中的實體管理對象命名較形象,所以將Session往EntityManager上面靠,理解起來還是沒有太大困難的。

        開發EJB和Hibernate還有所不同,Hibernate從某方面來說,它需要你從網上下載Hibernate的包,而EJB不一樣的是,它是由應用伺服器實現的,我這裡的做法是引入JBoss根目錄下client裡面所有的jar包,這樣就有了EJB開發的環境了。那麼需要怎樣做才能夠建立我的第一個EntityBean呢?

        首先,拷貝資料庫驅動到JBoss_Home/server/default/lib下,然後拷貝docs/examples/jca/mysql-ds.xml到/servet/default/deploy目錄下,並修改資料庫使用者名稱及密碼。

        點擊File->New->Ejb Project,填寫Project Name,這裡需要配置一下Configuration裡面的東西,如果不配置,你會發現你建立的EJB的註解都是無效的。點擊Modify進入ProjectFacets面板,Configuration選擇為custom,在Project Fecet選擇EjbModele,Java,JPA,版本號碼分別為3.0,1.6,2.0,如果不選JPA,你的EntityBean中的註解都是無效的。EAR
membership和Working sets暫時略過,點擊Nest,如果此時能Finish直接Finish即可,如果不能,那麼繼續Next,將Type選擇為Disable Library Configuration即可,然後Finish完成設定。

        現在你看原始碼根目錄的META-INF下,會發現persistence.xml這個檔案,這個檔案你可以理解為就是Hibernate的核心設定檔,在這裡面進行配置:

        mysql的資料庫配置和persistence配置如下:

persistence.xml<persistence-unit name="test" transaction-type="JTA"><jta-data-source>java:/MySqlDS</jta-data-source><properties><property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/><property name="hibernate.hbm2ddl.auto" value="update"/></properties></persistence-unit>mysql-ds.xml<local-tx-datasource>    <jndi-name>MySqlDS</jndi-name>    <connection-url>jdbc:mysql://localhost:3306/ejb3</connection-url>    <driver-class>com.mysql.jdbc.Driver</driver-class>    <user-name>root</user-name>    <password>admin</password>    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>     <metadata>       <type-mapping>mySQL</type-mapping>    </metadata>  </local-tx-datasource>

        現在,就可以開發實體Bean了,在項目中建立一個類,命名為User,有過Hibernate開發經驗的同學如果用過註解,那麼就很容易上手實體Bean的註解形式開發,因為他們都是採用了一套規範JPA。而且在開發實體Bean的時候,最好就是用JPA標準註解,盡量不用每個架構擴充的,因為經過這樣開發出來的實體Bean,複製到任何支援JPA的架構都是可以的。

        和Hibernate的實體註解方式一樣,首先需要一個@Entity來註明此類為實體,然後需要表示Id,並且為Id的選擇建置原則:Person.java(未列出get、set方法)

public class Person implements Serializable {private static final long serialVersionUID = 1L;@Id@GeneratedValueprivate int id;private String name;}

        這樣,一個實體Bean就開發完成了,那麼由於對資料庫配置了hibernate.hbm2ddl.auto為update,所以在EntityManager初始化的時候,就會自動對應表結構。

        下面,就再寫一個Manager,對Person進行操作:

@Stateless@Remotepublic class PersonManagerBean implements PersonManager {@PersistenceContext(unitName="test")private EntityManager em;@Overridepublic void addPerson(String name) {Person person=new Person();person.setName(name);em.persist(person);}}

        個人感覺EJB3.0中的命名要比Hibernate命名好一些,PersistenceContext就是SessionFactory,EntityManager就是Session,但Hibernate如果涉及到遠程,就歇菜了,而EJB是支援遠程調用的,並且EJB3.0發布為WebService也是極其容易。

        對於二者的選擇,我想通過大家對它們的描述以及名字就可以知道了。Hibernate,輕量級ORM架構,EJB企業級JavaBean。

        如果項目沒有涉及到分布式,遠程方法調用,那麼Hibernate用的還是不錯的

 
      至此,第一個實體Bean的開發就結束了,個人感覺對於EJB3.0的理解,最好還是建立在Hibernate上,因為EJB3.0開始了廣泛的使用註解,使用註解開發簡單是毋庸置疑的,也省去了在兩個視窗之間來回切換,但是對於理解來說,還是全程使用xml檔案開發有助於理解。

 
      最後再說一下註解和設定檔的選擇,註解的出現,絕對不是取代xml,但是由於註解的簡單,所以註解的應用廣泛化勢在必行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.