`

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

    博客分类:
  • J2EE
阅读更多

一、部署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


 完成

 

引入Jboss所有的jar包到项目中

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


 



 
 点击完成


 
 
 三、编写业务逻辑接口

 

我们来写一个接口

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

 可以测试了。

  • 大小: 79.8 KB
  • 大小: 10.8 KB
  • 大小: 7 KB
  • 大小: 7.1 KB
  • 大小: 77.4 KB
  • 大小: 26.6 KB
  • 大小: 8.4 KB
分享到:
评论

相关推荐

    EJB3.0的一个单表映射实体bean

    EJB3.0的一个单表映射实体bean,实现对数据的增、删、改、查

    传智播客 EJB3.0PPT 完整版 黎明活

    10_开发单表映射的实体bean 11_开发消息驱动bea 12_开发EJB容器模型的WEB服务 附录01_EJB3基本概念及发展前景 附录02_EJB3.0推荐教程 附录03_EJB3的运行环境 如果需要配套视频,请给本人私信。

    EJB 3.0从入门到精通

    全书共分16章,内容依次包含了Java EE概述、EJB基础、搭建EJB环境、会话bean、持久化实体、持久化实体管理器、对象关系映射、JPQL查询、消息驱动bean、事务、提高EJB 3.0性能、从Web层访问EJB 3和EJB安全、EJB和Web...

    EJB3.0 实例教程 -- 切片1

    6.4 单表映射的实体BEAN..38 6.5 持久化实体管理器ENTITYMANAGER..43 6.5.1 Entity获取find()....43 6.5.2 添加 persist().........43 6.5.3 更新 Merge() .........44 6.5.4 删除 Remove() .......44 6.5.5 执行 ...

    EJB3.0 实例教程 -- 切片2

    6.4 单表映射的实体BEAN..38 6.5 持久化实体管理器ENTITYMANAGER..43 6.5.1 Entity获取find()....43 6.5.2 添加 persist().........43 6.5.3 更新 Merge() .........44 6.5.4 删除 Remove() .......44 6.5.5 执行 ...

    EJB 3.0开发指南之多表映射

    在前面的例子中,我们每一个实体Bean只映射到数据库中的一张表上。事实上,一个实体Bean可以映射到多张表上。在一些需要字典表的项目上会经常用到,象以前我做过的项目,使用到很多国标规定的数据表。在我们下面这个...

    JavaBean(EJB) 3.0 全新体验

    在本文中将对新的规范进行一个概要性的介绍,包括新增的元数据支持,EJBQL的修改,实体Bean模型访问bean上下文的新方法和运行时环境等等。作者还讨论了EJB在未来要作出的调整以及EJB3.0与其他开发规范之间的关系。 ...

    EJB3.0实例教程

    EJB3.0实例教程PDF 黎活名著 1.2 联系作者.....................................................................................................6.4 单表映射的实体BEAN............................................

    EJB测试题。pdf

    EJB测试题.EJB原理与运行环境,实体 BEAN(ENTITY BEAN)与 ORM 关系对象映射,EJB3.0 QL语言.等

    何种设计模式和构架才能开发出最好的企业程序

    EJB3由于融合了POJOs和其他一些轻量级概念,所以对两者POJOs中的实体bean既可以再EJB容器内运行,也可以再EJB容器外运行,然而POJOs中的会话bean和消息驱动bean仍然有重量级的行为,因为他们只能在EJB容器内部运行。...

    Hibernate实战(第2版 中文高清版)

    第一部分 从Hibernate和EJB 3.0开始  第1章 理解对象/关系持久化   1.1 什么是持久化   1.1.1 关系数据库   1.1.2 理解SQL   1.1.3 在Java中使用SQL   1.1.4 面向对象应用程序中的持久化   1.2 范式不...

    JPA 批注参考.pdf

    作为 Java 企业版 5 (Java EE 5) Enterprise Java Bean (EJB) 3.0 规范的组成部分,Java 持续性 API (JPA) 显著简化了 EJB 持续性并提供了一个对象关系映射方法,该方法使您可以采用声明方式定义如何通过一种标准...

    JPA标注说明文档(带文档结构整理)

    作为 Java 企业版 5 (Java EE 5) Enterprise Java Bean (EJB) 3.0 规范的组成部分,Java 持续性 API (JPA) 显著简化了 EJB 持续性并提供了一个对象关系映射方法,该方法使您可以采用声明方式定义如何通过一种标准的...

    Hibernate注解

    * @Table —— 注解声明了该实体bean映射指定的表(table),目录(catalog)和schema的名字 * @Column —— 注解声明了属性到列的映射。该注解有如下的属性 * name 可选,列名(默认值是属性名) * unique 可选,...

Global site tag (gtag.js) - Google Analytics