禁用緩存我曾嘗試禁用L2高速緩存中的EclipseLink與Eclipse靛藍: -如何通過在persistence.xml使用以下性質的EclipseLink
<property name="eclipselink.cache.shared.default" value="false"/>
<shared-cache-mode>NONE</shared-cache-mode>
基本上我正在測試一個場景相同的對象是否在兩個不同的創建會話正在訪問數據庫兩次,或者兩個會話都指向在內存緩存中早期會話中創建的同一對象。它不應該因爲L2緩存由上面的persistence.xml性能提禁用
我的代碼如下: -
Session session = DataAccessManager.getManager().openSession();
ReferenceObjectRepository referenceObjectRepository = ReferenceObjectRepository.getInstance();
ReferenceObjectKey referenceObjectKey = new ReferenceObjectKey(getStringValue("testCacheByPass.input"));
//load object first time.
ReferenceObject referenceObject = referenceObjectRepository.load(ReferenceObject.class, referenceObjectKey);
logger.log(Level.SEVERE, "Cache ReferenceObject: " + referenceObject);
//load object in another session
Session sessionNew = DataAccessManager.getManager().openNewSession();
Object dbObject = referenceObjectRepository.load(ReferenceObject.class, referenceObjectKey);
logger.log(Level.SEVERE, "DB loaded ReferenceObject: " + dbObject);
請幫助我,我是否錯過了什麼?還是我需要以其他方式做?
此代碼完全抽象出EclipseLink/JPA,因此很難驗證您爲查詢使用單獨的EntityManager實例。代碼本身使它看起來像你正在重複使用相同的referenceObjectRepository--這可能是問題的一部分嗎?如果它重用相同的基礎EntityManager實例,則必須返回相同的實體實例,除非它被清除。 – Chris