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


  • 相关阅读:
    用javascript实现html页面之间的参数传递
    个性的研究
    [luogu1967] 货车运输
    mscorwks.dll 没有被指定在Windows上运行,错误状态 0xc000012f
    dom4j解析xml时报:系统找不到指定路径
    The strip's most beautiful gril,rendezvous never a cover;
    无法在自定义编辑器中开发TransactSQL文件
    Default code generation is disabled for model。。。
    使用IE9艰辛历程之从什么网页都打不开到什么都秒开的传奇
    Metro IE10快捷方式 不小心删了
  • 原文地址:https://www.cnblogs.com/wcb-xtu/p/5356538.html
Copyright © 2020-2023  润新知