EJB 3.0 学习第一天

来源:互联网 发布:2017腾讯大数据挑战赛 编辑:程序博客网 时间:2024/06/05 22:31

<!-- [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.1EntityBean是重量级的,但是在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

主要进行协助数据的交互,但是其信息并不保存在数据库中。

ClassesInterfaces

主要有四种Interfaces:Remote interface, Local interface, Endpoint interface, Message interface.
一般Sessionbeanmessage-driverbean都会实现其中的一种。而且必须标明是stateful或者是steatless.

The proxy stub, EJB container, bean instance.

2.3 Using Enterprise and Entity Beans

Session beans可以让客户程序不用管具体的操作,开发者可以更新session bean而不影响客户的程序。

Statefulstateless 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

从事务的起始到结束,保持对象和数据库之间的同步。结束后contextdestroyed.

 

(2) Extended persistence context

 

5.3 Packaging a Persistence Unit

EntityManager将一组classes对应到一个特定的数据库中。这组classes就被称作一个persistenceunit。在JavaSEJavaEE环境的打包方法略有不

同。配置文件persistence.xml可以配置一个或多个PersistenceUnit。这个文件放置在以下包的META-INF文件夹中:

普通的jar文件;EJB-JAR文件;Webarchive文件(.war)Enterprisearchive(.ear)

 

5.4 Obtaining an EntityManager

JavaPersistence API里,EntityManagerEntityManagerFactory创建。

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 managerpersistence content都是在Java EE环境下的JTA事务来管理,如果不是在Java EE环境下运行,那么JTA就不可用。Java

Persistence API通过EntityTransaction Interface提供了transaction-likeAPI。那么在标准下的Java程序里也可以通过这个接口来使用。

 

原创粉丝点击