第一步
準備jar包,官網下載下傳即可很友善。
在hibernate-release-4.1.1.Final\lib目錄下有四個存放jar包的目錄,其中
hibernate-release-4.1.1.Final\lib\jpa 存放hibernate對JPA提供實作的jar
hibernate-release-4.1.1.Final\lib\required 存放hibernate核心jar以及依賴的jar
這兩個目錄下的所有jar是我們體驗JPA所必需的。
第二步
建立一個Java Project,導入hibernate-release-4.1.1.Final\lib\jpa目錄和hibernate-release-4.1.1.Final\lib\required目錄下的所有jar;導入mysql的資料庫驅動包。
在項目的classpath路徑下建立META-INF目錄,建立persistence.xml檔案
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
<!-- 為持久化單元取名為 myJPA -->
<persistence-unit name="myJPA" transaction-type="RESOURCE_LOCAL">
<properties>
<!--配置Hibernate方言 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<!--配置資料庫驅動 -->
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<!--配置資料庫使用者名 -->
<property name="hibernate.connection.username" value="root" />
<!--配置資料庫密碼 -->
<property name="hibernate.connection.password" value="root" />
<!--配置資料庫url -->
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpa?useUnicode=true&characterEncoding=UTF-8" />
<!--設定外連接配接抓取樹的最大深度 -->
<property name="hibernate.max_fetch_depth" value="3" />
<!--自動輸出schema建立DDL語句 -->
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
編寫實體類
package com.cndatacom.jpa.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="t_user")
public class User {
/**
* 主鍵
*/
@Id
@GeneratedValue
private Long id;
/**
* 名字
*/
@Column(name="name")
private String name;
/**
* 密碼
*/
@Column(name="password")
private String password;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
編寫測試類
package com.cndatacom.jpa.test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.cndatacom.jpa.entity.User;
public class TestJPA {
EntityManagerFactory emf = null;
@Before
public void before() {
//根據在persistence.xml中配置的persistence-unit name 建立EntityManagerFactory
emf = Persistence.createEntityManagerFactory("myJPA");
}
/**
* 添加使用者
*/
@Test
public void addUser() {
//建立一個使用者
User user = new User();
user.setName("葉開");
user.setPassword("yekai");
//建立實體管理器對象
EntityManager em = emf.createEntityManager();
//開啟事務
em.getTransaction().begin();
//持久化對象
em.persist(user);
//送出事務
em.getTransaction().commit();
//關閉EntityManager
em.close();
}
/**
* 修改使用者(使用者處于托管狀态)
*/
@Test
public void modifyUser1() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//查找id為1的User,進行更新
User user = em.find(User.class, 1L);//User 的主鍵id為Long型
user.setName("楚留香");
em.getTransaction().commit();
em.close();
}
/**
* 修改使用者(使用者處于遊離(脫管)狀态)
*/
@Test
public void modifyUser2() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//查找id為1的User,進行更新
User user = em.find(User.class, 1L);//User 的主鍵id為Long型
em.clear();//将實體管理器中的所有實體變成了遊離态(脫管)
user.setName("李尋歡");
em.merge(user);//處于遊離态的實體必須使用該方法才能更新
em.getTransaction().commit();
em.close();
}
/**
* 删除使用者
*/
@Test
public void deleteUser() {
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
//查找id為1的User
User user = em.find(User.class, 1L);//User 的主鍵id為Long型
//進行删除
em.remove(user);
em.getTransaction().commit();
em.close();
}
/**
* 關閉EntityManagerFactory
*/
@After
public void after() {
if(null != emf) {
emf.close();
}
}
}
到此為止,jpa已經可以使用了,我們隻需要執行junit測試類就可以自動生成mysql資料庫中的表。
文章摘自:http://www.cnblogs.com/luxh/archive/2012/05/22/2512477.html
hibernate.hbm2ddl.auto配置詳解:http://www.cnblogs.com/talo/articles/1662244.html
Jpa hibernate背景增删改查使用例子:http://www.cnblogs.com/zhougaojun/p/3322147.html
Jpa 多表查詢:http://www.cnblogs.com/linjiqin/archive/2011/02/11/1951375.html
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9UkeOdXQ6pVdWd0Y2ZkMaZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN2cDNzkjMyEDNwITMzEDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
異常:
Unable to acquire a connection from driver [null], user [null] and URL [null]
http://blog.csdn.net/gaopeng0071/article/details/17262669