JPA2.0規範入門
阿新 • • 發佈:2018-11-09
JPA, Java永續性API, 顧名思義, 為了體現資料庫中資料儲存的永續性而存在。 通過與hibernate整合可以開發出增刪改查及許多拓展層面的應用。
要生成一個JPA應用程式,首先在與class同級的資料夾下生成一個JPA配置檔案, persistence.xml檔案
相應配置 如下:
<?xml version="1.0" encoding="UTF-8"?> <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"> <!-- 定義持久化單元的名稱,供實體管理工廠使用 --> <!-- name供persistence與實體工廠繫結使用,transaction-type定義了一對一資料庫或一對多資料庫操作型別 --> <persistence-unitname="hitqz" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <!-- 定義資料庫驅動型別 --> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /><!-- 定義資料庫方言 --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> <!--操作資料庫對應使用者名稱密碼及地址 --> <property name="hibernate.connection.username" value="xx"/> <property name="hibernate.connection.password" value="xxxx"/> <property name="hibernate.connection.url" value="xxxxxx"/> <!-- 定義在程式執行時是否在控制檯上顯示HQL語句,value="true"時顯示 --> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>
第二步 手動寫一個entity檔案,對實體中的類進行定義,生成getter及setter。
package com.hitqz.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; //@Entity註釋指名這是一個實體Bean,
//@Table註釋指定了Entity所要對映帶資料庫表,其中@Table.name()用來指定對映表的表名。及對應資料庫中我們將要對其進行操作的資料表。 @Entity @Table(name = "t_user") public class User {
//@[email protected]指明本實體bean中的id生成唯一主鍵策略。
@Id @GeneratedValue private Long id; private String name; private Integer age; public User() { } public User(String name, Integer age) { this.name = name; this.age = age; } 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 Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
第三步 撰寫測試單元,在測試單元test中對相應表結構和資料進行簡單增刪改查操作。
public class SysRightTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void runtest(){ //1,建立一個EntityManagerFactory EntityManagerFactory factory= Persistence.createEntityManagerFactory("hitqz"); //2,通過factory建立一個實體管理器 EntityManager em= factory.createEntityManager(); //3,因為有儲存動作,所以要開啟事務
em.getTransaction().begin(); User s = new User(); s.setName("週週"); s.setAge(22); em.persist(s); //4,儲存實體 // em.persist(new SysRight()); //5,提交事務 em.getTransaction().commit(); //6,關閉實體管理器 em.close(); //7,關閉實體管理工廠 factory.close();
}
修改:
em.getTransaction().begin(); User s = em.find(User.class, (long)1); System.out.println(s.getName() + s.getAge()); s.setAge(200); s.setName("劉劉"); System.out.println(s.getName() + s.getAge()); em.merge(s); //4,儲存實體 // em.persist(new SysRight()); //5,提交事務 em.getTransaction().commit();
刪除:
User s = em.find(User.class, (long)1);
em.remove(s);
將會刪除id為1的一條資料庫記錄。
查即find。
走進JPA2.0的第一步,邁的還算順利。感謝鵬哥的指導和耐心講解。走出畢業傷感季,男人就該有個男人樣,工作、立業、成家。加油。