3、JPA增刪改查經常使用方法

前言:建立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 }

相關文章
相關標籤/搜索