Posted on 2009-06-20 18:38
胡娟 閱讀(2029)
評論(0) 編輯 收藏 所屬分類:
JAVA
所需要的最小的jar包(注意:jar包所在路徑不能含有空格或中文)
hibernate3.jar
hibernate-cglib-repack-2.1_3.jar
slf4j-api-1.5.2.jar
javassist-3.4.GA.jar
jta-1.1.jar
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ejb3-persistence.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
log4j.jar
slf4j-log4j12.jar
創(chuàng)建實(shí)例類
package com.hujuan.bean;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
//默認(rèn)情況下表名稱是根據(jù)實(shí)體類名稱創(chuàng)建的,name可以修改表名稱
@Table(name="person_table")
public class Person {
private Integer id;
private String userName;
public Person(){
}
public Person(String userName) {
this.userName = userName;
}
//主鍵生成策略@GeneratedValue(strategy=GenerationType.AUTO),
//值為AUTO表示根據(jù)數(shù)據(jù)庫由Hibernate自動(dòng)選擇生成策略,也可以省略寫@GeneratedValue
//值為IDENTITY表示主鍵自增長
//值為SEQUENCE表示主鍵采用序列的方式
//值為TABLE各個(gè)數(shù)據(jù)庫都通用,但效率較低
@Id @GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
注意:因?yàn)椴捎玫氖?span lang="EN-US">Hibernate所以必須有一個(gè)空的構(gòu)造函數(shù)
JPA的配置文件
JPA規(guī)范要求配置文件在類路徑的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">
<!-- 持久化單元,transaction-type事務(wù)類型包括全局事務(wù)類型JTA和本地事務(wù)類型 RESOURCE_LOCAL-->
<persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL">
<properties>
<!-- 數(shù)據(jù)庫方言 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/> <!-- 建表方式,value值為creat-drop時(shí)表示創(chuàng)建應(yīng)用的時(shí)候建表,結(jié)束應(yīng)用的時(shí)候表自動(dòng)刪除;
值為update表示如果映射元數(shù)據(jù)不存在則建立表,如果映射元數(shù)據(jù)存在并新增加了字段則會(huì)添加到數(shù)據(jù)庫表中 -->
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="root"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpadb"/>
</properties>
</persistence-unit>
</persistence>
測試類
package com.hujuan.test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.junit.BeforeClass;
import org.junit.Test;
import com.hujuan.bean.Person;
public class PersonTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test
public void save(){
//EntityManagerFactory相當(dāng)于Hibernate中的sessionFactory
//Persistence.createEntityManagerFactory("jpa")與配置文件中的持久化單元名稱必須相同
EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpa");
//EntityManager相當(dāng)于Hibernate中session
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
//保存(持久化)方法
em.persist(new Person("Tom"));
em.getTransaction().commit();
em.close();
factory.close();
}
}