EJB3.0_开发单表映射的实体bean

一、部署Jboss数据源

mysql的jdbc驱动复制到jboss服务器的lib目录中

 

 

 

 

修改jboss数据源配置文件:到jboss-5.1.0.GA\docs\examples\jca目录下找到对应的数据源配置文件,我用的是mysql,所以只修改mysql-ds.xml文件
 修改成自己的mysql地址

 

<jndi-name>MysqlDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/bbs?useUnicode=true&amp;characterEncoding=UTF-8</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>123456</password>
 

 

 

修改完保存到目录jboss-5.1.0.GA\server\default\deploy下,启动Jboss(我用的是Myeclipse启动Jboss),命令控制台看到

 部署成功提示 JNDI name 'java:MysqlDS';


二、开发实体Bean

使用Myeclipse新建EJB项目,JNDI Data Source填写Jboss的JNDI name,前面的控制台可以看到,Persistence Unit Name自己命名,如:MysqlUnit

EJB3.0_开发单表映射的实体bean_第1张图片
 完成

 

引入Jboss所有的jar包到项目中
EJB3.0_开发单表映射的实体bean_第2张图片

使用Myeclipse的Hibernate视图,EJB反向工程


EJB3.0_开发单表映射的实体bean_第3张图片

 


EJB3.0_开发单表映射的实体bean_第4张图片
 
 点击完成


 
 
 三、编写业务逻辑接口

 

我们来写一个接口

public interface DuserService {
	public void delete(Integer id);
	public Duser getDuser(Integer id);
	public List<Duser> getDusers() ;
	public void save(Duser user);
	public void update(Duser user);
}
 

无状态会话Bean

@Stateless//设置成无状态会话Bean
@Remote(DuserService.class)//设置成远程Bean,公开“接口”
public class DuserServiceBean implements DuserService{
	/*
	 * 注入EntityManager对象
	 * unitName要与persistence.xml文件中保持一致
	 */
	@PersistenceContext(unitName = "MysqlUnit")
	EntityManager em;

	public void delete(Integer id) {
	/*
	 * em.getReference(Duser.class, id)
	 * 得到一个托管的实体对象
	 */
		em.remove(em.getReference(Duser.class, id));
	}

	public Duser getDuser(Integer id) {
		return em.find(Duser.class, id);
	}

	@SuppressWarnings("unchecked")
	public List<Duser> getDusers() {
		return em.createQuery("select o from Duser o").getResultList();
	}

	public void save(Duser user) {
		/*
		 * 保存新建状态对象,插入数据库,添加新纪录
		 */
		em.persist(user);
	}

	public void update(Duser user) {
		/*
		 * 实体Bean处于游离状态,可以删除
		 */
		em.merge(user);
		/*
		 * 托管状态,使用set方法就可以修改数据user.set*();
		 */

	}
}
 


 我们发布到Jboss中,启动Jboss,在控制台中观察,

 

16:10:35,937 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:

	DuserServiceBean/remote - EJB3.x Default Remote Business Interface
	DuserServiceBean/remote-cn.snailteam.entity.DuserService - EJB3.x Remote Business Interface
 

 

说明我们的DuserServiceBean无状态会话Bean已经部署成功。

 

四、测试

 

 新建一个DuserService接口测试类

public class DuserServiceTest {

	public static DuserService service;

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		/*
		 * 参数来自于当前目录下的jndi.properties文件
                 *远程调用的话,通过jndi.properties找到会话Bean,如果在一个容器内的话
                 *(比如部署在同在一个EJB容器内既一个Jboss内),就不需要jndi.properties,
                 *直接在容器中初始化上下文,找到EJB会话Bean                
                 */
		javax.naming.InitialContext ctx = new javax.naming.InitialContext();
		/*
		 * Jboss启动控制台中可以观察到 
		 * DuserServiceBean/remote - EJB3.x Default Remote Business Interface 
		 */
		service = (DuserService) ctx.lookup("DuserServiceBean/remote");
		System.out.println("初始化完成");
	}

	@Test
	public void testDelete() {

	}

	@Test
	public void testGetDuser() {

	}

	@Test
	public void testGetDusers() {
		List<Duser> users = service.getDusers();
		for(Duser user:users){
			System.out.println(user.getUid()+"-------"+user.getUsername());
		}
	}

	@Test
	public void testSave() {
		
	}

	@Test
	public void testUpdate() {

	}

}
 

测试之前我们需要设置初始化上下文件jndi.properties (可以查文档)

#Jboss命名连接工厂
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
#Jboss命名连接工厂地址
java.naming.provider.url=localhost:1099

 可以测试了。

你可能感兴趣的:(bean,mysql,jdbc,MyEclipse,jboss)