前言:建立EntityManager對象,須要先建立建立EntityManagerFactory對象
方式一:直接經過persistenceUnitName建立
1 String persistenceUnitName = "Jpa-1"; 2 EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName);
方式二:經過persistenceUnitName和properties一塊兒建立
1 String persistenceUnitName = "Jpa-1"; 2 Map<String, Object> properties = new HashMap<String, Object>(); 3 properties.put("hibernate.show_sql", false); 4 EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, properties);
2.建立一個測試增刪改查的JPA項目
1 package com.jtfr.jpa.test; 2 3 import javax.persistence.EntityManager; 4 import javax.persistence.EntityManagerFactory; 5 import javax.persistence.EntityTransaction; 6 import javax.persistence.Persistence; 7 8 import org.junit.After; 9 import org.junit.Before; 10 import org.junit.Test; 11 12 public class JpaTest { 13 14 private EntityManagerFactory entityManagerFactory; 15 private EntityManager entityManager; 16 private EntityTransaction transaction; 17 18 @Before 19 public void create(){ 20 entityManagerFactory = Persistence.createEntityManagerFactory("Jpa-1"); 21 entityManager = entityManagerFactory.createEntityManager(); 22 transaction = entityManager.getTransaction(); 23 transaction.begin(); 24 } 25 26 @Test 27 public void testFind(){ 28 System.out.println("沒問題"); 29 } 30 31 @After 32 public void end(){ 33 transaction.commit(); 34 entityManager.close(); 35 entityManagerFactory.close(); 36 } 37 }
3.經常使用增刪改查方法解釋
查詢方法
find方法:方法調用時,已經發出了sql進行查詢
1 @Test 2 public void testFind(){ 3 CustomerJpa customerJpa = entityManager.find(CustomerJpa.class, 100); 4 System.out.println("--------分割線做用:區分確實是find的時候就發出了sql語句---------"); 5 System.out.println(customerJpa.toString()); 6 }
getReference方法:方法調用時,返回的是代理對象,當代理對象使用時候才真正發送sql查詢數據庫,須要注意「懶加載」問題
1 @Test // 相似Hibernate的load方法 2 public void testGetReference(){ 3 CustomerJpa customerJpa = entityManager.getReference(CustomerJpa.class, 100); 4 System.out.println("返回的是代理對象"+customerJpa.getClass().getName()); 5 System.out.println("--------getReference方法調用的時候沒有發sql-------------"); 6 System.out.println(customerJpa.toString()); 7 }
persist方法:方法調用爲保存一條數據
1 // 相似 Hibernate 的 save 方法 2 @Test 3 public void testPersist(){ 4 CustomerJpa customerJpa = new CustomerJpa(); 5 customerJpa.setId(300100); 6 customerJpa.setLasName("夕陽遊子"); 7 customerJpa.setEmail("23228858@qq.com"); 8 customerJpa.setAge(15); 9 customerJpa.setCreateTime(new Date()); 10 customerJpa.setBirth(new Date()); 11 entityManager.persist(customerJpa); // 注意不能設置 Id 12 }