隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數據加載中……

          eclipse + JBoss 5 + EJB3開發指南(6):編寫第一個實體Bean程序

          本文為原創,如需轉載,請注明作者和出處,謝謝!

          上一篇:eclipse + JBoss 5 + EJB3開發指南(5):使用配置文件發布Session Bean

               EJB3容器通過EntityManager對象管理實體Bean,該類最主要的功能就是在記錄和JavaBean之間進行互相映射。例如,我們從數據庫中查出一條記錄,這條記錄有field1和field2兩個字段,假設有一個JavaBean,也包含了field1和field2屬性。那么EntityManager可以將這條記錄中的值映射到JavaBean的field1和field2屬性中。也就是說,在數據庫中的一條記錄就對應于一個JavaBean的對象實例。下面將給出一個簡單的例子來演示如何來實現一個應用實體Bean的程序。在這個例子中使用無狀態的session bean通過EntityManager對象從數據表中查找一條記錄,將該記錄映射成實體Bean的對象實例,最后通過session bean的方法返回該記錄的某個字段值。
             
              表名:t_users
              表中的字段和記錄
              id    name    password_md5
               1     bill    TaokQpoNJQb02eafO/JgYw==

          一、配置JBoss的數據庫連接池

          在<jboss安裝目錄>\server\default\deploy目錄中建立一個mysql-ds.xml文件,內容如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <datasources>
            
          <local-tx-datasource>
              
          <jndi-name>MyPIM</jndi-name>
              
          <connection-url>jdbc:mysql://localhost:3306/pim</connection-url>
              
          <driver-class>com.mysql.jdbc.Driver</driver-class>
              
          <user-name>root</user-name>
              
          <password>1234</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>
          </datasources>

              mysql-ds.xml文件用于配置mysql的數據源。實際上,該文件可以在<jboss安裝目錄>\docs\examples\jca目錄中找到,讀者只需要將數據庫名、用戶名和密碼以及jndi名改成自己的就可以了。最后將修改后的mysql-ds.xml文件復制到deploy目錄中(必須叫這個文件名)。
              連接mysql數據庫需要一個jdbc驅動(jar文件),將該文件復制到<jboss安裝目錄>\server\default\lib目錄中。

          二、編寫實體Bean

              User類是一個實體Bean,代碼如下:
          package entity;

          import javax.persistence.Column;
          import javax.persistence.Entity;
          import javax.persistence.Id;
          import javax.persistence.Table;

          @Entity
          @Table(name 
          = "t_users")
          public class User 
          {
              
          private int id;
              
          private String name;
              
          private String password;
              @Id
              
          public int getId()
              {
                  
                  
          return id;
              }
              
          public void setId(int id)
              {
                  
          this.id = id;
              }
              
          public String getName()
              {
                  
          return name;
              }
              
          public void setName(String name)
              {
                  
          this.name = name;
              }
              @Column(name 
          = "password_md5")
              
          public String getPassword()
              {
                  
          return password;
              }
              
          public void setPassword(String password)
              {
                  
          this.password = password;
              }
              
          }

          三、配置persistence.xml文件

             
          在META-INF目錄中建立一個persistence.xml文件,代碼如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <persistence xmlns="http://java.sun.com/xml/ns/persistence"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://java.sun.com/xml/ns/persistence
              http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"

              version
          ="1.0">
              
          <persistence-unit name="myentity">
                  
          <jta-data-source>java:/MyPIM</jta-data-source>
                  
          <properties>
                      
          <property name="hibernate.hbm2ddl.auto" value="none" />
                      
          <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
                  
          </properties>
              
          </persistence-unit>
          </persistence>

              其中<jta-data-source>元素的值就是mysql-ds.xml文件中配置的數據源名。如果使用注釋配置session bean,META-INF目錄下只有兩個文件即可:MANIFEST.MF和persistence.xml。

          四、在session bean中調用實體bean

             
          package service;

          import java.util.ArrayList;
          import java.util.List;
          import javax.ejb.Stateless;
          import javax.persistence.EntityManager;
          import javax.persistence.PersistenceContext;
          import entity.User;

          @Stateless
          public class UserBean implements UserBeanRemote
          {
              @PersistenceContext(unitName
          ="myentity")
              
          protected EntityManager em;

              @Override
              
          public String getPassword()
              {

                  User user 
          = em.find(User.class1);       
                  
          return user.getPassword();
              }
          }

              其中UserBeanRemote為遠程接口。要注意的是,@PersistenceContext注釋的unitName屬性值必須和persistence.xml文件中的<persistence-unit>元素的name屬性值相同。

          五、客戶端調用session bean

          InitialContext ctx = new InitialContext();
          UserBeanRemote
          userBeanRemote = (UserBeanRemote) ctx.lookup("MyEnterprise/UserBean/remote");
          System.out.println(userBeanRemote.getPassword(
          ));

              由于本書的程序都在一個ear包中,因此,默認的jndi名是MyEnterprise/UserBean/remote,如果直接發布包含EJB的jar包,默認的jndi名稱為UserBean/remote。
              運行上面的代碼后,將輸出如下的字符串:

          TaokQpoNJQb02eafO/JgYw==

          下一篇:eclipse + JBoss 5 + EJB3開發指南(7):實現Entity Bean的一對一(one-to-one)映射





          Android開發完全講義(第2版)(本書版權已輸出到臺灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2009-05-29 22:02 銀河使者 閱讀(2601) 評論(0)  編輯  收藏 所屬分類: java 原創ejb3JBoss

          主站蜘蛛池模板: 青田县| 即墨市| 汶川县| 察隅县| 广州市| 东乌珠穆沁旗| 平泉县| 明星| 西藏| 读书| 云林县| 申扎县| 安达市| 临高县| 色达县| 布拖县| 峨山| 买车| 区。| 湾仔区| 陈巴尔虎旗| 新干县| 呼伦贝尔市| 涟源市| 江津市| 凤凰县| 磐石市| 永清县| 正安县| 蒙城县| 南投市| 连江县| 酒泉市| 玉溪市| 应用必备| 廉江市| 会泽县| 通渭县| 霍林郭勒市| 姚安县| 合阳县|