<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
今天主要学习了一下EJB 3.0的主要概念,对EJB的类别和各自的作用有了一个大致的了解。
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]> <![endif]-->
1. Introduction
1.1 Server-Side Components
Enterprise JavaBeans is a standard server-side componentmodel for distributed business applications.
1.2 Persistence and Entity Bean
在EJB3.0中改为JavaPersistence API,用来定义如何mappingjava class到数据库。
在EJB2.1中EntityBean是重量级的,但是在3.0中,只是普通的JavaBean.
1.3 Asynchronous Messaging
统一支持JMS消息
1.4 Web Service
Web Services are network applications that use SOAP and WSDLto exchange information in the form of XML documents.
EJB 3.0 允许enterprisebean通过WebService的形式供其它应用使用。
2. Architectural Overview
2.1 Entity Bean
在EJB3.0中,EntityBean都是普通的bean,它们由EntityManager来管理。没有特别的Service,而都是普通的java代码,可以方便地进行测试。
Primary key 数据库中的关键字段。
Bean class 在代码中通过annonation将属性和数据库字段mapping起来。也可以通过XML文件来做mapping。
数据库信息在persistence.xml中。
2.2 The Enterprise Bean Component
Session beans, message-driven beans
主要进行协助数据的交互,但是其信息并不保存在数据库中。
Classes和Interfaces:
主要有四种Interfaces:Remote interface, Local interface, Endpoint interface, Message interface.
一般Sessionbean或message-driverbean都会实现其中的一种。而且必须标明是stateful或者是steatless.
The proxy stub, EJB container, bean instance.
2.3 Using Enterprise and Entity Beans
Session beans可以让客户程序不用管具体的操作,开发者可以更新session bean而不影响客户的程序。
Stateful和stateless session beans:
Stateful :相关的操作有关联性,在使用这个bean时,会话自动开始,使用结束后,会话自动关闭。
stateless: 方法之间没有什么关联,可以随时调用。
2.4 The bean-container contract
服务器使用EJBContext这个接口来给bean提供环境的信息,比如客户端信息、服务器信息、bean的信息等,sessionbean使用的是SessionContext,Message-driven bean使用的是MessageDriven-Context。
2.5 Summary
三种基本的bean:Entity Bean, Session bean, Message-driven bean.
Client并不直接使用sessionbean class,而是通过proxystub来使用bean。
3. Resource Management and Primary Services
EJB Servers支持6种主要的Service: concurrency, transactionmanagement, persistence, object distribution, naming, and security.
3.1 Resource Management
Instance Pooling 在客户端很多的时候,可以通过复用stateless session bean的方式来大大提高性能。
4. 做一个简单的EJB练习
5. Persistence: EntityManager
5.1 Entity bean都是普通的Java对象。(POJOs)
5.2 Managed Versus Unmanaged Entities
Persistence content: 被管理的entity对象集合,由entity manager管理。
两种persistencecontent:
(1) Transaction-scoped persistence content
从事务的起始到结束,保持对象和数据库之间的同步。结束后context被destroyed.
(2) Extended persistence context
5.3 Packaging a Persistence Unit
EntityManager将一组classes对应到一个特定的数据库中。这组classes就被称作一个persistenceunit。在JavaSE和JavaEE环境的打包方法略有不
同。配置文件persistence.xml可以配置一个或多个PersistenceUnit。这个文件放置在以下包的META-INF文件夹中:
普通的jar文件;EJB-JAR文件;Webarchive文件(.war);Enterprisearchive(.ear)。
5.4 Obtaining an EntityManager
在JavaPersistence API里,EntityManager由EntityManagerFactory创建。
Java SE中,可以通过Persistence来获得该工厂。
在JavaEE中,则是通过annotation来获得工厂。比如:
@PersistenceUnit(unitName="CRM")
privateEntityManagerFactory factory;
5.5 Interacting with an EntityManager
EntityManager有一系列处理对象的方法,比如persist, find, remove,refresh()等等。
5.6 Resource Local Transactions
entity manager的persistence content都是在Java EE环境下的JTA事务来管理,如果不是在Java EE环境下运行,那么JTA就不可用。Java
Persistence API通过EntityTransaction Interface提供了transaction-likeAPI。那么在标准下的Java程序里也可以通过这个接口来使用。