JPA ---- EntityManager


一、 EntityManager是JPA中用於增刪改查的接口,它的作用相當於一座橋梁,連接內存中的java對象和數據庫的數據存儲。其主要的方法定義如下:

   

Entity生命周期中的Managed,Detached,Removed三種狀態變化過程,如下圖所示:

 

   

 

       New:瞬時對象,尚未有id,還未和Persistence Context建立關聯的對象。

      Managed:持久化受管對象,有id值,已經和Persistence Context建立了關聯的對象。

      Datached:游離態離線對象,有id值,但沒有和Persistence Context建立關聯的對象。

       Removed:刪除的對象,有id值,尚且和Persistence Context有關聯,但是已經准備好從數據庫中刪除
狀態名
作為java對象存在
在實體管理器中存在
在數據庫存在
New(瞬時對象
yes
no
no
Managed(持久化受管對象
yes
yes
yes
Detached(游離態離線對象
no
no
no
Removed(刪除的對象
yes
yes
no
二名
 
 1、entityManager.persist(Object entity);  新增數據;
   如果entity的主鍵不為空,而數據庫沒有該主鍵,會拋出異常;
   如果entity的主鍵不為空,而數據庫有該主鍵,且entity的其他字段與數據庫不同,persist后不會更新數據庫;
 2、entityManager.find(Class<T> entityClass, Object primaryKey);  根據主鍵查找數據;
   如果主鍵格式不正確,會拋出illegalArgumentException異常;
   如果主鍵在數據庫未找到數據返回null;
 3、entityManager.remove(Object entity);  刪除數據;
   只能將Managed狀態的Entity實例刪除,由此Entity實例狀態變為Removed;
 4、entityManager.merge(T entity);   將Detached狀態的Entity實例轉至Managed狀態;
 5、entityManager.clear();  將所有的Entity實例狀態轉至Detached狀態;
 6、entityManager.flush();   將所有Managed狀態的Entity實例同步到數據庫;
 7、entityManager.refresh(Object entity); 加載Entity實例后,數據庫該條數據被修改,refresh該實例,能得到數據庫最新的修改, 覆蓋原來的Entity實例;
 8、entityManager.unwrap(Session.class):獲取Session對象

狀態名


免責聲明!

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



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