歡迎您光臨本站 註冊首頁

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

←手機掃碼閱讀     火星人 @ 2014-03-10 , reply:0

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安裝目錄>serverdefaultdeploy目錄中建立一個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安裝目錄>docsexamplesjca目錄中找到,讀者只需要將資料庫名、用戶名和密碼以及jndi名改成自己的就可以了.最后將修改後的mysql-ds.xml文件複製到deploy目錄中(必須叫這個文件名).

連接mysql資料庫需要一個jdbc驅動(jar文件),將該文件複製到<jboss安裝目錄>serverdefaultlib目錄中.

二、編寫實體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.class, 1);
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開發指南(6):編寫第一個實體Bean程序已經有656次圍觀

http://coctec.com/docs/java/show-post-61584.html