我想了解JPA如何工作。據我所知,如果你堅持一個實體,那個對象將留在內存中直到應用程序關閉。這意味着,當我查找先前持久化的實體時,將不會對數據庫進行查詢。假設沒有進行插入,更新或刪除操作,如果應用程序運行的時間足夠長,則其中的所有信息可能會持續存在。這是否意味着在某些時候,我將不再需要數據庫?實體持續多久?
編輯
我的問題是不是與數據庫。我確信數據庫不能從應用程序外部修改。我自己管理事務,所以一旦我提交,數據就會存儲在數據庫中。我的問題是:在我提交後,實體會發生什麼?它們是否保存在內存中並像緩存一樣?如果是這樣,他們在那裏呆多久?在我提交persist
後,我做了一個select
查詢。這個選擇應該返回我之前堅持的對象。該對象是從內存中獲取的,還是應用程序將查詢數據庫?
我不是故意刪除數據庫。我試圖瞭解是否在提交之後,所有這些實體將保留在內存中,並像緩存一樣。我經常需要一些信息。這就是爲什麼我不想每次都查詢數據庫的原因。列表會在應用程序本身中創建冗餘嗎? – Dragos 2012-01-08 17:38:51
如果您不想每次都進行查詢,則可以配置L2緩存以及可選的查詢緩存。在極少數情況下,您還可以選擇利用擴展持久化上下文,該上下文會將L1緩存在應用指定的持續時間內保持打開狀態,但這很棘手,因此首先嚐試L2;) – 2012-01-08 17:44:08