Oracle Technology Network (OTN) > Downloads, Discussions, and Documentation for Developers and DBAs
Introduction to EJB 3.0 Using JDeveloper and Oracle Application Server

如何在 JDeveloper 和 Oracle 应用服务器中使用 EJB 3.0

此教程向您展示了如何使用新的 EJB 3.0 规范在 JDeveloper 中为应用程序构建业务逻辑。

大约 15 分钟

主题

本教程包括下列主题:

创建连接

配置应用程序和项目

创建持久性模型
创建业务模型

创建客户端

将光标置于此图标上以加载和查看本教程的所有屏幕截图。 (警告: 因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注意: 此外,还可以在下列步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。 单击每个屏幕截图可以将其隐藏。

 

概述

在本教程中,您将了解如何使用 EJB 3.0 规范中的新特性。 您将通过开发和部署会话 bean 和实体 bean 实现一个持久性模型。 这些 bean 使用了 EJB 3.0 批注和新的 POJO(传统 Java 对象)模型持久性。 本教程还介绍了使用 Entity Manager API 创建、更新、删除和查询 POJO 持久性模型。

本教程还介绍了创建数据库连接和 OC4J 应用程序连接。 完成此应用程序后,还可以将它部署到 Oracle 应用服务器 10g 上供整个企业访问。

返回主题列表

在本教程中,您将为 DEPARTMENTS 和 EMPLOYEES 表创建持久性对象。 这些持久性对象以实体 Bean 的形式实现。 本教程包括创建增加新部门、检索部门数据和返回员工电子邮件等的方法。 这些方法使用 Entity Manager API 在会话 bean 中实现。

返回主题列表

前提条件

在开始本教程之前,执行以下步骤:

1.

能够访问或安装了 Oracle JDeveloper 10g 早期试用版。 该软件可以从 Oracle 技术网下载。

 

2.

能够访问或安装了示例模式。

该 OBE 使用 Oracle10g 数据库中附带的 HR 模式。 具体来说,创建的这些页面使用 EMPLOYEES 表。

您可以在线获得有关安装 HR 模式并在 JDeveloper 中创建到它的连接的说明:

http://www.oracle.com/technology/obe/obe1013jdev/common/OBEConnection.htm

3.

启动本教程中所使用版本的 JDeveloper。 双击 JDeveloper 可执行文件 (jdeveloper.exe),该文件可以在版本解压缩到的根目录下找到。

 

如果显示 Migrate User Settings 对话框,则单击 NO

关闭 Tip of the Day 窗口。

 

4.

现在 应显示 JDeveloper IDE。

 

创建连接

在教程的这一部分中,您将创建一个人力资源模式的数据库连接。

返回主题列表

1.

在 Applications 航器中,单击 Connections 选项卡创建数据库连接。

 

2.

右键单击连接导航器中的 Database 节点,选择 New Database Connection 选项。

 

3.

在 Create Database Connection 向导的 Welcome 页面上单击 Next。 在 Step 1of 4 中,输入 hrconn 作为连接名,然后单击 Next

 

4.

在 Create Database Connection 向导的 Step 2 of 4 中,输入 hr 作为用户名,输入 hr 作为口令。 选中 Deploy Password 复选框,然后单击 Next

 

5.

在Create Database Connection 向导的 Step 3 of 4 中,确保指定了以下值:

Driver thin
Host Name localhost
JDBC Port 1521
SID ORCL

单击 Next

 

6.

在 Create Database Connection 向导的 Step 4 of 4 中,单击 Test Connection 按钮,确保它与数据库成功连接。

单击 Finish

 

返回主题列表

配置应用程序和项目

在 JDeveloper 中工作时,可以在应用程序中按项目组织您的工作。 JDeveloper 提供了多个可用于创建应用程序和项目的模板。 这些模板预置了一些开发各种应用程序所需的基本技术,您可以选择符合您需要的模板来创建工作环境。 然后可以对它进行配置,添加要使用的其他技术。

在本主题中,您将选择这个基本的应用程序和一个新的项目(不包含预先定义的技术)。

要创建包含新项目的新应用程序,执行以下步骤:

1.

在 JDeveloper 中,单击 Applications 选项卡。 在 Applications 导航器中,右键单击 Applications,从上下文菜单中选择 New Application

 

2.

Create Application 对话框中,输入 HRApp 作为应用程序名,指定 buslogic 作为应用程序包前缀,并选择 No Template 选项。 单击 OK

 

3.

在 Create Project 对话框中,将项目从 Project1 重命名为 EJB_Project,单击 OK

 

4.

在 Applications 导航器中,右键单击 EJB_Project 节点,然后从上下文菜单中选择 Project Properties 选项。

 

返回主题列表

创建持久性模型

在教程的这一部分中,您将使用 EJB 3.0 实体 bean 为部门和员工创建持久性模型。
要创建 EJB 3.0 实体 bean,执行以下步骤:

1.

在 Applications 导航器中,右键单击 EJB_Project 节点,选择 New 选项。

 

2.

在 New Gallery 对话框中,展开 Categories 中的 Business Tier 节点。 在 Items 列表中,选择 CMP Entity Beans from tables。 单击 OK


3.

在“Create CMP Entity Beans from Tables”向导的 Welcome 页面上单击 Next。 在 Step 1 of 5 中,选择 Enterprise JavaBeans 3.0 (J2EE 5.0) 选项,然后单击 Next

 

4.

在 Step 2 of 5 中,选择 hrconn 作为连接名。

 

5.

在 step 3 of 5 中,对于 HR 模式和 Tables 对象类型,单击 Query 按钮,然后从 Available 列表中选择 DepartmentsEmployees 表,并将它们移到 Selected 列表中。 单击 Next

 

6.

在 step 4 of 5 中,输入 buslogic.persistence 作为程序包名称。 单击 Next

 

7.

在 step 5 of 5 中单击 Next,然后单击 Finish 创建实体 bean。

 

8.

在 Applications 导航器中双击 Departments.java 节点在源代码编辑器中将其打开。

 

9.

添加以下 EJB 3.0 元数据语句:

@NamedQuery(name="findAllDepartments", queryString="select object (d) from Departments d")

单击 import + 符号查看导入语句。 添加下列语句:

import javax.persistence.*;

 

10.

向下滚动至 @Id 语句,并用下列语句替换它:

@Id (generate=SEQUENCE,generator="DEPARTMENT_SEQ_GEN")
@SequenceGenerator(name="DEPARTMENT_SEQ_GEN", sequenceName="DEPARTMENTS_SEQ",allocationSize=1)

添加以下导入语句:

import static javax.persistence.GeneratorType.*;

 

11.

在应用程序导航器中双击 Employees.java 节点在源代码编辑器中将其打开。

 

12.

添加以下 EJB 3.0 元数据语句:

@NamedQuery(
name="getEmail",
queryString="SELECT OBJECT(employees) FROM Employees employees WHERE employees.employeeId = :empid")

单击 import + 符号查看导入语句,并添加下列语句:

import javax.persistence.*;

 

13.

在应用程序导航器中右键单击 EJB_Project 节点,选择 Make 选项编译您的 Java 类。

 

14.

确认 Message - Log 窗口没有报告任何错误。

返回主题列表

创建业务模型

在教程的这一部分中,您将创建一个会话 bean,该 bean 将实现一个查找员工和部门记录的方法。

1.

在 Applications 导航器中右键单击 EJB_Project project 节点,从上下文菜单中选择 New 选项。 打开 Business Tier 类别,选择 Session Bean 项。 单击 OK

 

2.

在 Create Enterprise JavaBean 向导的 Welcome 页面上单击 Next。 在 step 1 of 3 中,输入 HRAppFacade 作为 EJB 名称。 保留选项不变,然后单击 Next

 

3.

在 Step 2 of 3 中,确保 Bean Class 的完整名称为 buslogic.HRAppFacadeBean,然后单击 Next

 

4.

在 step 3 of 3 中,选择 Implement a Remote Interface 选项,单击 Next,然后单击 Finish

 

5.

Applications 导航器看起来应与下图类似:

 

6.

双击 HRAppFacade 接口,添加方法声明:

public void addDepartment(String department_name, long location_id) throws NamingException;
public String getEmail(long empid) throws NamingException;

 

7.

双击 HRAppFacadeBean 类在代码编辑器中将其打开。 然后单击紧挨着类声明的灯泡图标,并选择 Implement Methods

选择 addDepartmentgetEmail 方法,并单击 OK

 

8.

将刚实现的方法的代码更改为以下代码:

public void addDepartment(String department_name, long location_id) throws NamingException
{
Departments dept = new Departments();
dept.setDepartmentName(department_name);
dept.setLocationId(location_id);
this.getEntityManager().persist(dept);
}

public String getEmail(long empid) throws NamingException
{
Employees emp = (Employees)this.getEntityManager().createNamedQuery("getEmail").setParameter("empid", empid).getSingleResult();
return emp.getEmail();
}

 

9.

右键单击 EJB_Project 项目,选择 Make 选项编译该项目。

 

10.

确认 Messages - Log 窗口没有报告任何错误。

 

返回主题列表

创建客户端

1.

创建客户端的第一步是使用在 JDeveloper 内部提供的 OC4J 服务器运行 HRAppFacadeBean。 该服务器允许您在 JDeveloper 内部创建 J2EE 应用程序并对其进行测试。 这使得不再需要在开发/测试周期内运行外部服务器。

在 Applications 导航器中,右键单击 HRAppFacadeBean 并选择 Run

这将运行嵌入的服务器并部署 HRAppFacadeBean。

 

2.

接下来的步骤将创建测试客户端。

在 Applications 导航器中,右键单击 HRAppFacadeBean 并选择 New Sample Java Client

 

3.

在 Sample EJB Java Client Details 对话框中,选择 Connect to OC4J Embedded in JDeveloper

单击 OK


4.

双击 HRAppFacadeClient 节点在源代码编辑器中打开该文件。 在 Main 方法中,注释掉对 findAllDepartments 和 findAllEmployees 方法的调用。

// System.out.println( hRAppFacade.findAllDepartments( ) );
// System.out.println( hRAppFacade.findAllEmployees( ) );

 

5.

HRAppFacadeClient 中,添加下列语句使用 addDepartments() 方法创建一个新部门。

String department_name = "IT Administration 12";
long location_id = 1500;
hRAppFacade.addDepartment( department_name, location_id );

 

6.

指定您想查看其电子邮件的员工的员工 ID。 例如:

long empid = 100;

调用 getEmail() 方法,打印参数 employee_id 的电子邮件:

System.out.println(hRAppFacade.getEmail( empid ));

 

7.

一些 Java 虚拟机可能不能识别 JDeveloper 用来运行此示例客户端的 -javaagent 运行时选项。

为了避免与此选项相关的任何运行时问题,请按照以下步骤改变 JDeveloper 使用 JVM 的方式。

在 Application Navigator 中右键单击 EJB Project,从上下文菜单中选择 Project Properties 打开 EJB_Project 的项目属性。

 

8.

选择 Run/Debug 类别。

选择默认的运行配置,单击 Edit

 

9.

在 Edit Run Configuration 向导中选择 Launch Settings 类别。

 

10.

使用 Virtual Machine 下拉列表,选择 Client 作为 JVM 类型。

单击 OK 应用更改,关闭 Edit Run Configuration 窗口。 再次单击 OK 关闭 Project Properties 窗口。

 

11.

在 Applications 导航器中,右键单击 HRAppFacadeClient 文件并选择 Run

 

12.

确保返回您指定客户的电子邮件 (SKING)

 

13.

确保使用您为该 ID 指定的序列将一个新的部门添加到表中。在 Connection 页面上,展开 Database > HR > Tables > DEPARTMENTS,在编辑器中单击 Data 选项卡。

 

返回主题列表

在本教程中,您使用 EJB 3.0 创建了持久性服务并访问了它们。 此外,您使用了一个客户端来测试部署的 EJB。

返回主题列表

将鼠标置于该图标上可以隐藏所有的屏幕截图。

 

E-mail this page
打印机视图 打印机视图