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

從持久性上下文中刪除給定實體,導致託管實體脫離。 對實體進行的未刷新更改(如果有)(包括刪除實體)將不會同步到數據庫。 先前引用分離實體的實體將繼續引用它。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章