一、創建且運行JPA工程


1. 創建JPA 工程

(1)選擇創建 JPA Project,注意不是Java Project

(2)JPA version選擇 2.0

(3)選擇用戶庫,否則會出現 At least one user library must be selected. 錯誤

 

(4)注意persistence.xml文件位置

 

2. 導包,我直接復制過來的包。

導入Hibernate包、導入JPA包、導入Mysql

3.編寫配置文件persistence.xml 里面要配置數據庫連接相關信息和Hibernate相關信息。

(1)編寫數據庫連接相關信息

1 <!-- 連接數據庫的基本信息 -->
2 <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
3 <property name="javax.persistence.jdbc.url" value="jdbc:mysql://14.12.71.21:3306/jpa?useUnicode=true&amp;characterEncoding=utf8&amp;characterSetResults=utf8"/>
4 <property name="javax.persistence.jdbc.user" value="root"/>
5 <property name="javax.persistence.jdbc.password" value="xxxx"/>

(2)Hibernate相關信息配置

 1 <!-- 配置 JPA 實現產品的基本屬性. 配置 hibernate 的基本屬性 -->
 2     <!-- 語句格式化 -->
 3 <property name="hibernate.format_sql" value="true"/>
 4     <!-- 語句輸出 -->
 5 <property name="hibernate.show_sql" value="true"/>
 6     <!-- 自動處理表結構 -->
 7 <property name="hibernate.hbm2ddl.auto" value="update"/>
 8 <!-- 
 9 配置使用什么 ORM 產品來作為 JPA 的實現 
10 1. 實際上配置的是 javax.persistence.spi.PersistenceProvider 實現類。
11 2. 若JPA項目這個你只有一個JPA的實現產品,則也可以不配置該節點。
12 -->
13 <provider>org.hibernate.ejb.HibernatePersistence</provider>

4.創建實體類

(1)實體類加注解,@Entity@Table(name = "表名")兩個注解。

 1 import javax.persistence.Column;
 2 import javax.persistence.Entity;
 3 import javax.persistence.GeneratedValue;
 4 import javax.persistence.GenerationType;
 5 import javax.persistence.Id;
 6 import javax.persistence.Table;
 7 
 8 @Entity
 9 @Table(name = "jpa_ustomer")
10 public class Customer {

 

 

(2)字段加注解

 

 1     // 選擇主鍵自增方式
 2     @GeneratedValue(strategy=GenerationType.AUTO)
 3     @Id
 4     //@Column(name="ID") // 對應列名,如果不寫效果一樣。
 5     public Integer getId() {
 6         return id;
 7     }
 8     public void setId(Integer id) {
 9         this.id = id;
10     }
11     // 列名不一樣,必須要寫上,好對應。
12     @Column(name="LAST_NAME")
13     public String getLasName() {
14         return lasName;
15     }
16     public void setLasName(String lasName) {
17         this.lasName = lasName;
18     }
19     public String getEmail() {
20         return email;
21     }
22     // 一樣不需要寫@Column
23     public void setEmail(String email) {
24         this.email = email;
25     }

 

 

(3)實體類需要配置到配置文件 persistence 中。

 

1 <!-- 添加持久化類 -->
2 <class>com.jtfr.jpa.helloworld.Customer</class>

 

 

5.編寫測試類

(1)創建EntityManagerFactory

1 // 1.創建EntityManagerFactory
2 // 來源persistence.xml 里面的name <persistence-unit name="Jpa-1" transaction-type="RESOURCE_LOCAL">
3 String persistenceUnitName = "Jpa-1";
4 EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);

(2)創建EntityManager

1 // 2.創建EntityManager
2 EntityManager entityManager = entityManagerFactory.createEntityManager();

(3)開啟事務

1 // 3.開啟事務
2 EntityTransaction transaction = entityManager.getTransaction();
3 transaction.begin();

(4)進行持久化操作(數據存入數據庫中)

1 // 4.進行持久化操作
2 Customer customer = new Customer();
3 customer.setAge(12);
4 customer.setEmail("1123181523@qq.com");
5 customer.setLasName("Tom");
6 entityManager.persist(customer);

(5)提交事務

1 // 5.提交事務
2 transaction.commit();

(6)關閉EntityManager

1 // 6.關閉EntityManager
2 entityManager.close();

(7)關閉EntityManagerFactory

1 // 7.關閉EntityManagerFactory
2 entityManagerFactory.close();

6.查看結果

(1)自動創建了表,且插入了數據

(2)表主鍵是自增的方式

 

7.總結:JPA就是Hibernate的馬甲

8.錯誤地方

(1) Hibernate 在eclipse里面沒有用戶庫,需要自己配置,百度有。

(2) 創建的時候選擇的是2.1 需要換成2.0才是正確的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM