一、预备知识
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>
运行程序,将可以看到在数据库当中增加了。
|