Eclipse jee下JPA的开发
 

2009-07-16 来源:suneca.com

 

一、预备知识

JPA即Java Persistence API,它是是EJB 3.0 规范 (JSR 220) 中引入的标准对象关系可持续性。

以下文字来源于互联网:

程序代码 程序代码

JPA主要借鉴了领导持久层的诸如Hibernate,Oracle TopLink,Java Data Objects (JDO)等持久层框架,以及早期EJB的容器管理持久化的思想与概念。实现了ORM(对象关系映射:Object-Relational Mapping)和 实体间的关系映射等功能。

1,简化程序模型

2,使用注释,简化配置

3,ORM:对象关系映射

4,EJB-QL:提供了动态查询,和功能强大的EJB查询语言

5,独立。可在EJB容器之外单独运行,也使得实体Bean更加容易测试

6,灵活,可配置。可以使用第三方JPA provider实现

OpenJPA概要:

OpenJPA 是 Apache 组织提供的开源项目,它的前身是BEA公司的Kodo Java Persistence API,于2006年7月捐献给ASF(Apache Software Foundation),并于2007年8月28日发布了OpenJPA 1.0.0版本。OpenJPA 100%实现了 EJB 3.0(JSR220) 中的 JPA 标准,为开发者提供功能强大、使用简单的持久层数据管理框架。OpenJPA 当然实现了对象关系映射(ORM)与对象关系等功能。OpenJPA 除了可以运行在符合EJB 3.0 标准的EJB容器中之外,还可以作为独立的持久层框架,轻松地与其它JavaEE应用框架集成。

当前OpenJPA的最新版本是1.1

二、工具的下载及安装

JDK 1.5的下载地址:http://java.sun.com

Eclipse jee的下载地址:http://www.eclipse.org/downloads/

OpenJPA的下载地址:http://openjpa.apache.org/downloads.html

Mysql的下载地址:http://dev.mysql.com/downloads/

Apache Tomcat的下载地址:http://tomcat.apache.org/download-60.cgi

对于Eclipse jee跟OpenJPA直接解压缩就可以使用了,Mysql进行安装

三、Eclipse下环境的配置

1,配置JPA。点击window --> Preferences的“参数选择”对象框当中选择JPA;接着,点击Configure User Libraries,在用户类库当中将OpenJPA的核心包以及依赖的外部包文件加到OpenJPA Library当中。配置后的效果图如下所示:

2,配置数据库连接,点击window --> Preferences的“参数选择”对象框当中选择Connectivity--> Driver Definitions,在数据库的选择项当中选择Mysql,并添加Mysql JDBC Driver。最终的效果如下图所示:

3,创建新的JPA Project:点击File --> New --> Other,在弹出的创建向导当中选择JPA,如下图所示:

点击Next(下一步)。在窗口当中输入项目名称,比如JPATraining,其它默认

点击Next(下一步)

各项默认就可以了,点击下一步

一切都默认就可以,因为之前已经配置完了。最后点击Finish

最后,可以在Project Explorer当中看到src/META-INF/下面多了两个文件,一个叫persistence.xml,另一个叫orm.xml

四、程序的编写

1、数据库脚本

程序代码 程序代码 Create TABLE ECA_USER(
  ID INT NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(20) NOT NULL,
  LOGINID VARCHAR(20) NOT NULL,
  PASSWORD VARCHAR(32) NOT NULL,
  AGE INT NOT NULL,
  PRIMARY KEY(ID)
);

2,Entity

程序代码 程序代码 package com.suneca.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;

/**
*
* @author ChenYuzhe
* @version 1.0
* Create-Time:2008-7-16 下午06:55:22
*/

@Entity
@Table(name="ECA_USER")
public class User {
    
    @Id
    @GeneratedValue(strategy=IDENTITY)
    private int id;
    
    @Column(name = "NAME")
    private String name;
    
    @Column(name = "LOGINID")
    private String loginId;
    
    @Column(name = "PASSWORD")
    private String password;
    
    @Column(name = "AGE")
    private int age;

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getLoginId() {
        return loginId;
    }

    public String getPassword() {
        return password;
    }

    public int getAge() {
        return age;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setLoginId(String loginId) {
        this.loginId = loginId;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setAge(int age) {
        this.age = age;
    }    
}

3,测试类的编写

程序代码 程序代码 package com.suneca.test;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.EntityTransaction;

import com.suneca.entity.User;

/**
*
* @author ChenYuzhe
* @version 1.0
* Create-Time:2008-7-16 下午06:55:08
*/

public class UserTest {
    
    public static void main(String[] args){    
        // get Entity Manager
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("MyJPA");
        long startTime = System.currentTimeMillis();
        EntityManager em = factory.createEntityManager();
        
        // get Transaction and Begin Transaction
        EntityTransaction transaction = em.getTransaction();
        transaction.begin();
        User user = new User();
        user.setName("陈毓哲");
        user.setLoginId("zizz");
        user.setPassword("admin");
        user.setAge(28);            
        em.persist(user);

        // Commit    
        transaction.commit();
        long endTime = System.currentTimeMillis();
        System.out.println(endTime - startTime);
        em.close();
    }

}

4,persistence.xml的修改

程序代码 程序代码 <?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="MyJPA" transaction-type="RESOURCE_LOCAL">
        <!-- 定义jpa的Provider -->
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <!-- 定义持久化实体 -->
        <class>com.suneca.entity.User</class>
        <!-- 定义jpa的数据库参数 -->
        <properties>
            <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/suneca"/>
            <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
            <property name="openjpa.ConnectionUserName" value="root"/>
            <property name="openjpa.ConnectionPassword" value="admin"/>
        </properties>
    </persistence-unit>
</persistence>

运行程序,将可以看到在数据库当中增加了。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织