在本教程中,您将了解如何使用 EJB 3.0 规范中的新特性。 您将通过开发和部署会话 bean 和实体 bean 实现一个持久性模型。 这些 bean 使用了 EJB 3.0 批注和新的 POJO(传统 Java 对象)模型持久性。 本教程还介绍了使用 Entity Manager API 创建、更新、删除和查询 POJO 持久性模型。
| 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。
选择 addDepartment 和 getEmail 方法,并单击 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 选项卡。
|