『壹』 JPA的幾個常用方法
1. persist():將臨時狀態的對象保存進資料庫。【插入一條新記錄】
//由於涉及資料庫增刪改,執行該語句前需啟用事務
entityManager.persist(modelObject);
2.merge():將對象存入資料庫,不同於persist(),merger()對於操作的對象,如果對象存在於資料庫則對對象進行修改,
如果對象在資料庫中不存在,則將該對象作為一條新記錄插入資料庫。
entityManager.merge(modelObject);
3.find()與getReference():查找對象。不同點:
當對象不存在時,find()返回null, getReference()會拋出javax.persistence.EntityNotFoundException異常
4.remove():將對象從資料庫中刪除。
entityManager.remove(entityManager.getReference(ModelObject.class,key));
5.refresh(Object obj):重新從資料庫中讀取數據。
6.contains(Object obj):判斷對象是否在資料庫中存在,返回true \ false。
7.flush():立即寫入資料庫。
執行persist()、merger()時,數據並不是立即寫入資料庫中,
而是由JPA緩存起來,在執行flush()時寫入。
在事務提交的時候,JPA會自動執行flush()一次性保存所有數據。
如果需要立即保存,可手動執行flush()。
setFlushModel():修改EntityManager的Flush模式。
EntityManager的Flush模式默認為FlushModel.AUTO,這種模式下,在執行查詢
(指使用JPQL語句查詢時,不包括find()和getReference()查詢)或事務提交時自動執行flush()。通過setFlushModel( FlushModel f )設置為FlushModel.COMMIT,該模式下只有在事務提交時才會執行flush()寫入資料庫。