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

 

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

0. EJB3.0 与 JPA

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

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

第二部分就是咱们所说的JPA(Java Persistence API),之因此取名叫JPA,颇有多是由于持久化的接口位于javax.persistence.css

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.html

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表,以下所示。java

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

示例程序:node

  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工程:mysql

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

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

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

7. 建立实体类

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

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

复制下面的代码 :web

 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标注。

相关文章
相关标签/搜索