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標註。

相關文章
相關標籤/搜索