background image

 

然而在 Java EE 容器中的实体肯定是无法被客户端代码直接访问的,而且,根据 
EJB3.0 规范的描述,Java EE 

 

容器中的实体无法和 EJB2.1 

 

中的实体一样绑定到 JNDI,

 

因此我们的选择只能是使用会话 Bean 

 

来封装 EntityBean 的访问。

  OpenJPA 应用开发

 

  在上一章中,我们了解了如何将 OpenJPA 

 

应用移植到 Java EE 容器时需要完成的

 

工作内容,本章中,我们将通过一个简单的例子来学习如何在 Java EE 容器中开发、部

 

署一个 OpenJPA 应用。
  Java EE 

 

环境下,应用 OpenJPA 

 

框架开发 EJB3.0 应用的主要步骤如下:

 

  创建 EJB 应用目录;

 

  在 Java EE 

 

容器中配置 JDBC 数据源;

 

  编写 ( 

 

修改 ) 配置文件;

    Java EE  

 

容 器 通 过 EJB jar  

 

中 的 META-INF\persistence.xml   文 件 来 创 建 

EntityManagerFactory

 

,然后在需要的时候将 EntityManagerFactory 对象或者它创

 

建的 EntityManager 

 

对象注入 OpenJPA 容器中。

 

  根据业务需要设计 Java 

 

对象、编写对应的 Java 实体类;

 

  用 JDK 

 

编译 Java 实体类;

 

  用 OpenJPA 

提供的工具 PCEnhancer--enhance 

 

编译好的 Java 实体类;

 

  被 enhance 

过的类可以提供更好的运行性能、灵活的 懒加载 等方面的优势,更多

 

详细的内容请参考 OpenJPA 的帮助文档。

 

  使用 OpenJPA 

 

提供的工具 MappingTool   

从 Java 

 

对象生成数据库定义文件 (DDL);

 

  可以通过 MappingTool 

 

工具直接保持 Entity 和数据库之间的一致性,也可以使用 

MappingTool 

 

工具生成的数据库定义文件 (DDL) 创建应用正常运行所需要的数据库结

构。

 

  将创建的实体类注册到 OpenJPA 容器中;

 

  应用会话 Bean 封装对实体类的访问;

 

  客户端通过会话 Bean 的访问,达到访问实体的目标。

   

  我们将使用本系列文章的 第 2 

 

部分:第一个 OpenJPA 

 

应用 中使用过的简单例子,

 

我们将创建名为 Animal 

 

的实体,它有两个属性,分别是 id   

和 name,Animal 对象将

 

被持久化到本地的 MySQL 

 

数据库中,其中 id 

 

属性对应的数据库字段由 MySQL 数据库

自动生成。
  演示开发环境说明

 

  下面的演示步骤说明均基于 Windows XP 平台,JDK 

 

版本为 1.5.0_11,数据库服

 

务器为 MySQL5.0

 

,和演示代码位于同一台机器上。所有演示用例对应的 MySQL 数据

库为 openjpa”

 

,访问 MySQL 

的用户名和密码也均为 openjpa”。

  Java EE 

 

容器使用 JBoss 

 

应用服务器 4.2GA 

 

或者版本,默认安装在 C:\jboss-

4.2.0.GA 目录下。
  Java EE 

 

环境下 OpenJPA 应用开发典型步骤

 

  请读者注意,后面章节中关于操作的说明均基于 Windows XP 操作系统,如果您使
用的开发环境运行在其它类型的操作系统之上,请根据实际情况做出相应的调整。
  建立工程目录

 

  在 C: 

 

盘根目下创建名为 ejb3demo 

 

的目录,它包括名为 src 

 

的目录,然后在 src 

目录下创建合适的文件和目录。ejb3demo\src 

 

目录是标准的 ejb 目录,我们所有的类文