EJB(Enterprise JavaBeans)是使用Java语言构造可移植的、可重用的和可伸缩的业务应用程序平台。EJB是EJB容器的特定运行时环境中执行的一段java代码,容器提供若干组件服务。
EJB组件有三种类型:
- 会话bean;
- 消息驱动bean;
- 实体;
会话bean和消息驱动bean用于实现EJB应用程序的业务逻辑,而实体用于持久化。
如图,EJB3 API的整体组织情况。java持久化API完全独立于EJB3容器。业务逻辑处理由两组件:会话bean,消息驱动bean容器管理。持久化对象成为实体,由持久化提供器通过EntityManager接口管理。
会话bean
会话bean有两种类型:有状态(stateful)和无状态(stateless)。既可以在本地调用会话bean,也可以使用Java RMI远程调用。无状态会话bean可以暴露为Web服务。
消息驱动bean
与会话bean一样,MDB也处理业务逻辑。但是,MDB在一个重要方面有所不同:客户端从不直接调用MDB方法。相反,有发送到消息服务器的消息触发MDB,这样就允许在系统组件之间发送异步消息。典型的消息服务器有IBM WebSphere MQ、Oracle Advanced Queueing 和TIBCO。MDB通常用于健壮系的集成和异步处理。
实体和JPA
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。持久化就是把java对象内包含的数据自动存储到数据库中。EJB3中的持久化由JPA管理。ORM在本质上是使用配置把java对象中保存的数据映射到数据库表的过程。持久化提供器在本质上是支持EJB3 Java持久化API(JPA)的ORM框架。
JPA定义了如下标准:
- 用于把实体映射到数据表的ORM配置元数据的创建;
- EntityManager API——用于对实体执行CRUD持久化操作的标准API;
- Java持久化查询语言(JPQL),用于搜索和检索持久化应用程序数据。
因为JPA标准化了Java平台的ORM框架,所以你可以插入ORM产品(比如JBoss Hibernate、Oracle TopLink或BEA Kodo
)作为应用程序和底层JPA“持久化提供器”。
使用API构造应用程序的持久化逻辑,就必须使用实体。实体是持久化到数据库中的java对象。
JPA EntityManager接口以设计提供持久化服务的方式管理实体。虽然实体通知JPA提供器如何映射到数据库,的是那会实体并不持久化自己。EntityManager接口从实体读取ORM元数据并且执行持久化操作。JPA提供处理生命周期管理、性能优化、缓存和事务管理的功能。