今天读的EJB的书,看到介绍持久层的一章。其中EJB的持久层由EntityManager机制实现。当一个Entity对象未attach到一个EntityManager上的时候是未被管理(处理)的,这时仍然是一个POJO(plain old Java objects ),对于Entity的改变不会引起数据库的变化。当Entity被attached到一个EntityManager以后,EntityManager跟踪实体对象的变化,并将此变化数据库同步。
持久层上下文是受管理的实体对象的集合。 它们被EntityManager管理。Entity Manager跟踪一个持久层上下文中的所有实体对象的变化,并于数据库同步。当这个持久层上下文关闭后,所有受管理的实体对象都被分离,不再是受管理的了。 一个对象从上下文中分离出来也就不再受EntityManager的管理,它的状态变化也就无法作用与数据库持久层。
而持久层上下文又分为两类: transaction-scoped和extended persistence contexts。这里就不详细介绍。
对于detached的实体对象EJB3.0较EJB2.1有所不同,原文是现下面这样介绍的。大体意思就是说:在Entity实例变得unmanaged的时候,实体对象可以被串行化并通过网络传输到客户端,从而可以实现交互。而在EJB2.1中要通过getFirstName( ), getLastName( )等等来实现数据的读取和串行化。而EJB3.0不再需要这种模式,因为在实体对象脱离持久层上下文之后自动转变成了数据对象。具体的看下面的英文吧呵呵。
Entity instances become unmanaged and detached when a transaction scope or extended persistence context ends. An interesting side effect is that detached entities can be serialized and sent across the network to a remote client. The client can make changes remotely to these serialized object instances and send them back to the server to be merged back and synchronized with the database.
This behavior is very different from the EJB 2.1 entity model, where entities are always managed by the container. In EJB 2.1, applications using entity beans always had a proxy to the entity bean; in EJB 3.0, you work with concrete instances of plain Java classes. For EJB 2.1 developers, this behavior will seem strange at first, since you are used to the container managing every aspect of the entity. You'll find that after you get used to the new EJB 3.0 model, your application code actually shrinks and is easier to manage.
EJB 2.1 code often used the Value Object Pattern (often called Data Transfer Objects). The idea of this pattern was that the entity bean exposed a method that copied its entire state into an object that could be serialized to remote clients (like a Swing application) that needed access to the entity's state:
// EJB 2.1 Entity bean class
public class CustomerBean implements javax.ejb.EntityBean {
CustomerValueObject getCustomerVO( ) {
return new CustomerValueObject(getFirstName( ), getLastName( ),
getStreet( ), getCity( ), getState, getZip( ));
}
}
It is very expensive to make a remote method call to an entity bean from a client. If the client had to call getFirstName( ), getLastName( ), etc., to get information about a customer it was displaying, performance would suffer. This is where the Value Object Pattern came in. EJB 3.0 eliminates the need for this pattern because persistent objects become value objects automatically when they are detached from a persistent context.
分享到:
相关推荐
**EJB 持久层设计** EJB(Enterprise JavaBeans)是Java EE平台的核心组成部分,主要用于构建可扩展、安全且事务处理能力强的企业级应用程序。持久层是任何应用程序中的关键部分,它负责管理数据的存储和检索,通常...
在"更多电子资料.docx"文档和"EJB+JPA数据库持久层开发实践详解.pdf"中,可能涵盖了以下内容: 1. EJB和JPA的基础概念和原理介绍。 2. 如何创建和配置EJB组件,包括会话bean、实体bean和消息驱动bean的声明与实现。...
EJB.JPA-数据库持久层开发实践详解,感兴趣的人可以阅读一次
EJB+JPA数据库持久层开发实践详解.pdf 完整版
WebLogic EJB学习笔记主要涵盖了企业级Java Bean(Enterprise JavaBeans,简称EJB)在Oracle WebLogic Server中的应用和管理。EJB是Java EE(Java Platform, Enterprise Edition)平台的核心组件,用于构建可扩展、...
在深入探讨《ejb学习笔记》这一主题之前,我们首先需要理解什么是EJB(Enterprise JavaBeans)。EJB是Java平台为企业级应用开发提供的一套组件模型,它属于J2EE(Java 2 Platform, Enterprise Edition)的一部分,...
### EJB学习笔记第六部分详解 #### 一、EJB之间的调用 EJB (Enterprise JavaBeans) 是Java EE平台中用于开发分布式企业应用程序的重要组件。在实际开发过程中,经常需要一个EJB调用另一个EJB来实现更复杂的业务...
本资料集包含了ejb培训笔记和源代码,旨在帮助学习者深入理解EJB的工作原理及其在实际项目中的应用。 笔记部分可能涵盖以下关键知识点: 1. **EJB概述**:介绍EJB的历史、版本和基本概念,包括EJB 2.x和EJB 3.x的...
6. EJB与Web层(如Servlet、JSP)的交互。 7. EJB 3.x引入的注解驱动开发,简化了EJB的使用。 8. JPA和Hibernate等ORM(Object-Relational Mapping)工具,以及如何与EJB实体bean集成。 9. EJB的并发控制,处理多个...
Weblogic EJB 学习笔记主要涵盖了EJB(Enterprise JavaBeans)的基础知识,包括无状态会话bean、有状态会话bean和实体bean这三种主要的EJB类型,以及EJB在Weblogic服务器中的配置和事务管理。 1. **无状态会话bean*...
【EJB学习笔记、运行机制】 企业级程序(Enterprise Application)是围绕商业目的设计的,具有分布分层的程序架构。这种类型的程序旨在满足大型企业的复杂需求,通常涉及多个组件和层,确保系统的稳定性和可扩展性...
【EJB学习笔记】 EJB,全称为Enterprise Java Beans,是Java平台上的一个标准,用于开发和部署服务器端的分布式组件。它基于Java语言,为创建高效能、安全且可扩展的企业级应用提供了框架。EJB规范由Java ...
【EJB学习笔记2】 EJB,全称Enterprise JavaBeans,是Java EE(现在被称为Jakarta EE)平台的一部分,主要用于构建可复用的、安全的、可伸缩的服务器端应用程序。EJB标准定义了一组规范,使得开发者可以创建分布式...
本笔记代码主要涵盖了EJB3的一些核心特性,包括定时任务(timer)、会话bean(session)、实体bean(entity)、拦截器(interceptor)、领域模型(domain)、客户端(client)、事务管理(transaction)、消息传递...
### EJB学习笔记4:深入理解实体与JPA #### 实体的概念与作用 实体,在企业级Java开发中,特别是EJB(Enterprise JavaBeans)框架下,指的是具有持久化能力的POJO(Plain Old Java Object)类。不同于实体Bean...
在这些系统中,EJB可以作为业务逻辑层,处理复杂的事务处理、数据持久化和安全控制。 总的来说,EJB是Java EE平台中的重要部分,它提供了许多企业级功能,帮助开发者构建可靠、高效的应用程序。尽管现代框架如...