一、JPA(Java Persistence API)是SUN官方推出的Java持久化規范,它為Java開發人員提供了一種對象/關聯映射工具來管理Java應用中的關系數據。它的出現主要是為了簡化現有的持久化開發工作和整合ORM技術,結束現在Hibernate,TopLink,JDO等ORM框架各自為營的局面。JPA是在充分吸收了現有Hibernate,TopLink,JDO 等ORM框架的基礎上發展而來的,具有易於使用,伸縮性強等優點。
二、JPA包括以下三方面的技術
1、ORM映射元數據
JPA支持XML和JDK5.0注釋兩種元數據形式,元數據描述對象和表之間的映射關系,框架據此將實體對象持久化到數據庫表中。
2、Java持久化API
用來操作實體對象,執行CRUD操作,框架在后台替我們完成所有的事情,開發者可以從繁瑣的JDBC和SQL代碼中解脫出來。
3、查詢語言(JPQL)
這是持久化操作中很重要的一個方面,通過面向對象而非面向數據庫的查詢語言查詢數據,避免程序的SQL語句緊密耦合。
三、實例:
1、創建JPA Project,導入jar包:
(1)Hibernate必須的jar包
(2)hibernate-entitymanager-4.2.2.Final.jar
(3)mysql驅動jar包
2、編寫持久化類:
@Table(name="jpa_customer")
@Entity
public class Customer {
private Integer id;
private String lastName;
private String email;
private Integer age;
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name="last_name")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
3、配置核心配置文件(persistence.xml)
<!-- 配置使用什么ORM產品,作為JPA的實現
1.實際上配置的是javax.persistence.spi.PersistenceProvider接口的實現類
2.若JPA項目中只有一個JPA的實現產品,也可以不配置給節點
-->
<provider> org.hibernate.ejb.HibernatePersistence</provider>
<!-- 配置實體類 -->
<class>com.beans.Customer</class>
<properties>
<!-- 配置數據庫連接的基本信息 -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="admin"/>
<!-- 配置JPA實現產品的基本信息, 配置hibernate的基本屬性-->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
4、測試:
public class Main {
public static void main(String[] args) {
//1.創建EntityManagerFactory
String persistenceUnitName = "jpa-1";
EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory(persistenceUnitName);
//2.創建EntityManager
EntityManager entityManager = entityManagerFactory.createEntityManager();
//3.開啟事務
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//4.進行持久化操作
Customer customer = new Customer();
customer.setLastName("張三");
customer.setEmail("abc@qq.com");
customer.setAge(23);
entityManager.persist(customer);
//5.提交事務
transaction.commit();
//6.關閉EntityManager
entityManager.close();
//7.關閉EntityManagerFactory
entityManagerFactory.close();
}
}