天天看點

spring data jpa 小白翻譯三(entityManager API)

javax.persistence.EntityManager.persist

使執行個體被管理和持久化。

如果實體已存在,則在調用persist操作時可能抛出EntityExistsException,或者在flush或commit時抛出EntityExistsException或其他PersistenceException。

如果在PersistenceContextType.TRANSACTION類型的 受容器管理的 實體管理器上調用 該方法 且沒有事務 會抛出TransactionRequiredException

javax.persistence.EntityManager.merge

将給定實體的狀态合并到目前持久性上下文中。

傳回一個狀态合并到上下文的托管執行個體

如果執行個體不是實體或是分離的實體,會抛出IllegalArgumentException 

如果在PersistenceContextType.TRANSACTION類型的 受容器管理的 實體管理器上調用 該方法 且沒有事務 會抛出TransactionRequiredException

javax.persistence.EntityManager.remove

删除實體

如果執行個體不是實體或是分離的實體,會抛出IllegalArgumentException 

如果在PersistenceContextType.TRANSACTION類型的 受容器管理的 實體管理器上調用 該方法 且沒有事務 會抛出TransactionRequiredException

javax.persistence.EntityManager.find

使用指定的屬性按主鍵和鎖定查找。搜尋指定類和主鍵的實體,并根據指定的鎖類型鎖定它。如果實體執行個體包含在持久性上下文中,則從那裡傳回它。

如果在持久性上下文中找到實體并且鎖模式類型是悲觀的且實體具有版本屬性,則持久性提供程式必須在擷取資料庫鎖時執行樂觀版本檢查。如果這些檢查失敗,則抛出OptimisticLockException。

如果鎖定模式類型是悲觀的并且找到了實體執行個體但無法鎖定:

•如果資料庫鎖定失敗導緻事務級復原,則抛出PessimisticLockException

•如果資料庫鎖定失敗僅導緻語句級復原,則将引發LockTimeoutException

如果無法識别特定于供應商的屬性或提示,則會以靜默方式忽略它。

便攜式應用程式不應該依賴于标準逾時提示。根據使用的資料庫和提供程式使用的鎖定機制,可能會或可能不會提示提示。

javax.persistence.EntityManager.getReference

擷取一個執行個體,其狀态可能會被懶惰地取出。 如果資料庫中不存在請求的執行個體,則在首次通路執行個體狀态時将引發EntityNotFoundException。 (在調用getReference時,允許持久性提供者運作時抛出EntityNotFoundException。)除非在實體管理器打開時,執行個體就可以被應用通路,否則應用程式不應期望執行個體狀态在分離時可用。

javax.persistence.EntityManager.flush()

将持久性上下文與基礎資料庫同步

javax.persistence.EntityManager.lock

使用指定的鎖定模式類型鎖定持久性上下文中包含的實體執行個體。

如果指定了悲觀鎖定模式類型且實體包含版本屬性,則持久性提供程式還必須在擷取資料庫鎖定時執行樂觀版本檢查。 如果這些檢查失敗,則抛出OptimisticLockException。

javax.persistence.EntityManager.refresh

從資料庫重新整理執行個體的狀态,覆寫對實體所做的更改(如果有)。

javax.persistence.EntityManager.clear

清除持久性上下文,導緻所有托管實體分離。 對未重新整理到資料庫的實體所做的更改将不會保留。javax.persistence.EntityManager.detach

從持久性上下文中删除給定實體,導緻托管實體脫離。 對實體進行的未重新整理更改(如果有)(包括删除實體)将不會同步到資料庫。 先前引用分離實體的實體将繼續引用它。