【EJB基础】Persistence Bean(持久化Bean)

持久化Bean跟普通Java Bean无异,区别在于它们用ejb的注解进行了标记。

持久化Bean有下列基本要求:

  • 一个实体类(即普通的POJO),并将其标识为@Entity
  • 实体类必须要有主键,一般用@Id将其标识
  • /META-INF/目录下,有persistence.xml文件,其主要作用是定义实体类映射的相关配置信息,比如指定数据源、都有哪些实体类、以及跟持久化相关的其它的一些属性

 

下面讲解一下怎么创建一个持久化Bean和它的调用。

第一步:配置JBOSS数据源(基于JBOSS4.2.3进行开发,JBOSS6.0以上有所变化)

  • 拷贝数据库驱动到JBOSS_HOME/server/default/lib
  • 拷贝docs/examples/jca/mysql-ds.xml/server/default/deploy目录下,并修改数据库用户名及密码
  • Mysql-ds.xml文件的内容类似下面所示:
		<datasources>
		  <local-tx-datasource>
		    <jndi-name>MySqlDS</jndi-name>
		    <connection-url>jdbc:mysql://localhost/ejb3</connection-url>
		    <driver-class>com.mysql.jdbc.Driver</driver-class>
		    <user-name>root</user-name>
		    <password>root</password>
		…….

第二步:创建EJB项目,支持EntityBean

点击next,到下一个界面。

说明:Persistence Unit Name:我们在后面会用这个名称来跟它所指定的数据库打交道(现在可以随便起个)

JNDI Data Source:输入我们刚才配置的数据源名称,并加上前缀

java:/取消Specify JPA Datasource details的复选框

在创建完成之后,自动在META-INF目录下添加了persistence.xml文件,


其内容如下:

第三步:编写实体类,并注解映射规则 @Entity

	public class Person {
		@Id
		private int id;
		private String name;
		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;
		}
		
	}

第四步:创建实体类对应的数据库表

JBOSS应用服务器中,JPA是由Hibernate来作为底层的实现,因此,我们可以在persitence.xml中配置一些与Hibernate相关的属性,比如下面的配置:


部署EJB项目之后,即可以看到JBOSS自动导出了数据库表


第五步:编写业务逻辑类,操作持久化数据

	@Stateless
	@Remote
	public class PersonManagerBean implements PersonManager {
	
		//注入实体管理器对象
		@PersistenceContext(unitName="test") //加上注解unitName从persistence.xml中获得
		private EntityManager em;
		
		public void addPerson(String name) {
			//给实体赋值
			Person person=new Person();
			person.setId(10);
			person.setName(name);
			//使用EntityManager的persist方法,将数据持久化到数据库
			em.persist(person);
		}
	
	}

第六步:编写Client端进行测试数据持久化操作   

  /**     
    * 持久化测试方法
    * @param @param args   <span style="font-family: 宋体; font-size: 14pt;">*/</span>
	
public static void main(String[] args)throws Exception {
	InitialContext ctx = new InitialContext();
	PersonManager personManager= (PersonManager)ctx.lookup("PersonManagerBean/remote");
	personManager.addPerson("smile");
}
测试结果:

ITOO中的EJB使用原来是从这儿来的啊,除了前面的数据源配置操作不一样,其他都一样。对ITOO的框架越来越熟悉了。不过,JBOSS4.2JBOSS6.2差距还是蛮大的,好好研究一下。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
EJB(Enterprise JavaBeans)中,Session Bean 和 Entity Bean 是两种不同类型的组件,用于实现不同的功能。 1. Session Bean(会话Bean): Session Bean 是用于处理业务逻辑的组件。它代表了一个特定的会话,可以执行一系列相关的操作。Session Bean 可以分为以下两种类型: - Stateless Session Bean(无状态会话Bean):它不保存客户端的状态信息,每个方法调用都是独立的。适用于无需保存客户端状态的业务逻辑。 - Stateful Session Bean(有状态会话Bean):它保存了客户端的状态信息,可以跟踪多个方法调用之间的状态。适用于需要保存客户端状态的业务逻辑。 2. Entity Bean(实体Bean): Entity Bean 用于表示业务领域中的实体对象,例如数据库表中的行。它们持久化到数据库中,并提供对这些实体对象的增删改查等操作。Entity Bean 可以分为以下两种类型: - Container-Managed Persistence(CMP):容器管理持久化。在 CMP 中,容器负责管理实体的持久化,开发人员只需定义实体类和相关的映射关系。 - Bean-Managed Persistence(BMP):Bean管理持久化。在 BMP 中,开发人员需要自己编写代码来控制实体的持久化和数据库访问。 区别和含义: - Session Bean 主要用于处理业务逻辑,不负责持久化数据,而 Entity Bean 用于表示实体对象,并负责将实体对象持久化到数据库中。 - Session Bean 可以是无状态或有状态的,而 Entity Bean 通常是有状态的,因为它们需要维护实体对象的状态和标识。 - Session Bean 的生命周期由客户端决定,而 Entity Bean 的生命周期由容器管理。 - CMP 提供了更简单的持久化解决方案,开发人员无需编写 SQL 或 JDBC 代码,而 BMP 需要开发人员手动管理数据库访问和事务。 需要注意的是,EJB 在 Java EE 6 版本之后已经进入了轻量级的 CDI(Contexts and Dependency Injection)时代,推荐使用 CDI 来管理会话和实体等组件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值