Eclipse + Jboss AS 7.1 创建 EJB3.0之JPA工程(上)

Eclipse + Jboss AS 7.1 创建 EJB3.0之JPA工程

0. EJB3.0 与 JPA

EJB3.0是一份规范,该规范由不同的部分组成:

  • 第一部分为session bean和message-driven bean定义了新的编程模型,以及部署规则等等;
  • 第二部分专门定义了持久化相关的规范:实体,对象/关系映射元数据,持久化管理接口和查询语言。

第二部分就是我们所说的JPA(Java Persistence API),之所以取名叫JPA,很有可能是因为持久化的接口位于javax.persistence.

1. 环境预备


  • JDK 6 (Java SE 6)
  • EJB 3.0 (stateless session bean)
  • EJB 3.0 Java Persistence API (JPA)
  • Eclipse Indigo IDE for Java EE Developers (3.7.1)
  • JBoss Tools – Core 3.3.0 M5 for Eclipse Indigo (3.7.1)
  • JBoss Application Server (AS) 7.1.0.CR1b / Final
  • MySQL 5.5 (To install MySQL refer this page)
  • MySQL Connector/J 5.1

2. 配置开发环境


参考此链接下载和安装开发环境,并在Jboss应用服务器上部署EJB3.0.

3. 工程描述


  • 我们将创建一个简单的符合EJB 3规范的 JPA 工程和一个远程访问的 java 应用客户端
  • 我们会创建一个JPA实体,并通过一个无状态的 session bean在这个实体上执行某些操作。
  • 为了测试这个JPA示例,我们会写一个包含静态main()方法的java应用客户端程序J.
  • 为了简单起见,我们将 “实体”, “session bean” 和 “客户端” 放在同一个工程中。

4. 步骤


  1. 创建数据库表
  2. 创建JPA实体
    • 带有 @Entity 注解的普通 Java Bean 类
    • “persistence.xml”
    • 【可选】“orm.xml”(如果你选择在“XML”中定义对象-关系表映射)
  3. 创建Stateless Session Bean
    • Bean接口
    • Bean的实现类
  4. 创建Client
    • 带有静态main()方法的Client类
    • jboss-ejb-client.properties(定义JBoss AS7特有的client环境)
    • JAR包(for accessing Session Bean)
    • MySQL连接器需要的JAR包
  5. 在JBoss AS7中添加MySQL数据源

5. 在MySQL中创建数据库表


JPA定义了整套数据持久化规范,让我们来看看它是如何在数据存储模式下工作的。假设你已有一个project表,如下所示。

FieldTypeKeyExtra
pname varchar(255)    
pnumber int Primary Key auto_increment
plocation varchar(255)    
dept_no    
  • 此表位于jpadb的database中
  • 如何在MySQL中创建“database”和“table”,网上教程很多,这里不在讲解

示例程序:

  1. 在ubuntu环境下启动Mysql服务并登陆
    sudo service mysql start
    mysql -u [name] -p
    [password]
    
  2. 新建“database”和“table”
    create database jpadb;
    use jpadb;
    CREATE TABLE project (
     pname varchar(255),
     pnumber int PRIMARY KEY AUTO_INCREMENT,
     plocation varchar(255),
     dept_no int
    );
    

    

6. 新建 EJB Project

  • 打开Eclipse IDE,按照以下三步创建一个新的EJB工程:

  • 输入工程名FirstJPAProject,并按下图选择Runtine和module:

  • 单击“Next” -> “Next” -> “Finish”.

  • Project Explore 视图中的工程结构如下:

7. 创建实体类

在这个简单的示例中,我们只有一个“Project”实体类,它是一个不含业务逻辑的java简单对象。这个类可以不用做任何改变运行在Java SE和Java EE环境(取代了Entity Bean,JPA规范不拘于Java EE平台)。在这个示例中,我们使用在Java EE环境中。
我们将ejbModule -> New -> Class

  • 输入包名com.ibytecode.entities
  • 输入类名Project
  • 点击Finish

复制下面的代码 :

 1 package com.ibytecode.entities;
 2 
 3 import java.io.Serializable;
 4 import javax.persistence.Entity;
 5 import javax.persistence.Id;
 6 import javax.persistence.Column;
 7 
 8 @Entity(name = "project")
 9 public class Project implements Serializable {
10     private static final long serialVersionUID = 1L;
11 
12     public Project() {
13         super();
14     }
15    
16     @Id
17     private int pnumber;
18     private String pname;
19     private String plocation;
20 
21     @Column(name = "dept_no")
22     private int deptNo;
23 
24     public int getPnumber() {
25         return pnumber;
26     }
27     public void setPnumber(int pnumber) {
28         this.pnumber = pnumber;
29     }
30     public String getPname() {
31         return pname;
32     }
33     public void setPname(String pname) {
34         this.pname = pname;
35     }
36     public String getPlocation() {
37         return plocation;
38     }
39     public void setPlocation(String plocation) {
40         this.plocation = plocation;
41     }
42     public int getDeptNo() {
43         return deptNo;
44     }
45     public void setDeptNo(int deptNo) {
46         this.deptNo = deptNo;
47     }
48     @Override
49     public String toString() {
50         return "Project [pnumber=" + pnumber + ", pname=" + pname
51                 + ", plocation=" + plocation + ", deptNo=" + deptNo + "]";
52     }
53 }
View Code

注意:
上面的代码中并没有@Table标注。根据默认规则,@Entity标注中的name属性会被认为是表名。类似的,如果一个变量名和表中的某一列的属性名匹配,就不需要加@Column标注。


原文地址:https://www.cnblogs.com/wcb-xtu/p/5356538.html