當調用EntityManager.flush()時,它是否也會刷新二級緩存?我試着用谷歌搜索,我也嘗試沖洗它,它似乎是這樣,但它確實是很好的。當調用EntityManager.flush()時,它是否也會刷新第二個緩存?
編輯:現在它似乎並沒有像刷新二級緩存。
當調用EntityManager.flush()時,它是否也會刷新二級緩存?我試着用谷歌搜索,我也嘗試沖洗它,它似乎是這樣,但它確實是很好的。當調用EntityManager.flush()時,它是否也會刷新第二個緩存?
編輯:現在它似乎並沒有像刷新二級緩存。
JPA沒有二級緩存的概念(它不是規範的一部分)。所以第二級緩存的行爲完全取決於JPA提供者。你在用什麼Hibernate,EclipseLink,OpenJPA?
更新:我站在部分校正,JPA 2.0引入幾個選項來控制第二級高速緩存的使用(如@Cachable)
L2高速緩存應該(默認,在任何合理的JPA實現)被在更新提交而不是刷新,但這不是在JPA2規範中強制執行的,所以您需要了解實現細節。 DataNucleus當然只會在提交時更新它。如果二級緩存在刷新時更新,然後這些對象更改回滾,則會導致潛在的無效/非持久數據被讀取。有些人可能會允許這個選項。
似乎沒有在EclipseLink中刷新二級緩存。 – LuckyLuke 2012-01-18 19:00:21
我正在使用EclipseLink – LuckyLuke 2012-01-18 18:43:28
在JPA中尋找有關緩存的內容時,我發現了一些關於二級緩存的良好鏈接 - 希望它們也能爲您提供幫助 - http://docs.oracle.com/javaee/6/ tutorial/doc/gkjio.html http://help.sap.com/saphelp_nw73/helpdata/en/f5/bb247575004294831c900556ca62ae/frameset.htm – ND27 2014-03-13 18:22:47