JPA (Java Persistence API)的目标之一是制定一个可以由很多供应商实现的API,并且开发人员可以编码来实现该API,而不是使用私有供应商特有的API。因此开发人员只需使用供应商特有的API来获得JPA规范没有解决但应用程序中需要的功能。尽可能地使用JPA API,但是当需要供应商公开但是规范中没有提供的功能时,则使用供应商特有的API。
JPA需要Provider来实现其功能,Hibernate就是JPA Provider中很强的一个.从功能上来说,JPA现在就是Hibernate功能的一个子集。Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的JPA(Java Persistence API) 兼容认证。
本文目的只在展示Hibernate提供的JPA如何在J2SE环境下的配置。
Eclipse3.4 for j2se + Hibernate3.3
1.新建java项目,配置资源库
引入Hibernate3.3资源包,必须有:
[img]http://dl.iteye.com/upload/picture/pic/49405/7ba5bf0a-dbbd-3e60-a34c-de0036fc8edb.png[/img]
此外当然还要jdbc库引入
2.在src目录下新建META-INF/persistence.xml文档
3.以上配置工作就完成了!下面开始测试下。
(1)建表
(2) 编写实体类,用jpa配置与表的映射关系
(3)为了简单期间,俺们就不再写个DAO类了,直接在测试类里获得实体管理器,并只实现一个持久化动作
执行应用程序,数据成功插入数据库!
JPA需要Provider来实现其功能,Hibernate就是JPA Provider中很强的一个.从功能上来说,JPA现在就是Hibernate功能的一个子集。Hibernate 从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的JPA(Java Persistence API) 兼容认证。
本文目的只在展示Hibernate提供的JPA如何在J2SE环境下的配置。
Eclipse3.4 for j2se + Hibernate3.3
1.新建java项目,配置资源库
引入Hibernate3.3资源包,必须有:
[img]http://dl.iteye.com/upload/picture/pic/49405/7ba5bf0a-dbbd-3e60-a34c-de0036fc8edb.png[/img]
此外当然还要jdbc库引入
2.在src目录下新建META-INF/persistence.xml文档
<persistence 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"
version="1.0">
<persistence-unit name="testjpa" transaction-type="RESOURCE_LOCAL">
<class>org.hibernate.ejb.HibernatePersistence</class>
<!-- 实体类 可以不用配置,@Enty类会自动加入上下文中
<class>com.fencheng.core.TradeType</class>
-->
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<property name="hibernate.connection.driver_class" value="net.sourceforge.jtds.jdbc.Driver"/>
<property name="hibernate.connection.username" value="admin"/>
<property name="hibernate.connection.password" value="admin"/>
<property name="hibernate.connection.url" valuejdbc:jtds:sqlserver://localhost:1143/smart;user=admin;password=admin""/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
3.以上配置工作就完成了!下面开始测试下。
(1)建表
CREATE
TABLE trantype
(
trancode CHAR(6) COLLATE Chinese_PRC_CI_AS NOT NULL,
tranname CHAR(40) COLLATE Chinese_PRC_CI_AS,
CONSTRAINT PK_trantype PRIMARY KEY (trancode)
)
(2) 编写实体类,用jpa配置与表的映射关系
package com.fencheng.core;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="trantype")
public class TradeType {
private String code;
private String name;
public TradeType(){}
public TradeType(String code, String name) {
this.code = code;
this.name = name;
}
@Id
@Column(name="trancode",unique=true, nullable=false)
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Column(name="tranname", length=40, nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(3)为了简单期间,俺们就不再写个DAO类了,直接在测试类里获得实体管理器,并只实现一个持久化动作
package com.fencheng.core;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class TestHibernate {
private EntityManager em;
private EntityManagerFactory emf;
public TestHibernate(){
emf = Persistence.createEntityManagerFactory("testjpa");
em = emf.createEntityManager();
}
public void addType(TradeType type){
em.getTransaction().begin();
em.persist(type);
em.getTransaction().commit();
}
public static void main(String[] args) {
TestHibernate th = new TestHibernate();
th.addType(new TradeType("001","blabla"));
}
}
执行应用程序,数据成功插入数据库!