/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.jpa.test.cacheable.cachemodes; import javax.persistence.CacheRetrieveMode; import javax.persistence.CacheStoreMode; import javax.persistence.EntityManager; import org.hibernate.CacheMode; import org.hibernate.Session; import org.hibernate.jpa.AvailableSettings; import org.hibernate.jpa.HibernateEntityManager; import org.hibernate.jpa.test.BaseEntityManagerFunctionalTestCase; import org.junit.Test; import static org.junit.Assert.assertEquals; /** * @author Steve Ebersole */ public class SharedCacheModesTest extends BaseEntityManagerFunctionalTestCase { @Override public Class[] getAnnotatedClasses() { return new Class[] { SimpleEntity.class }; } @Test public void testEntityManagerCacheModes() { EntityManager em; Session session; em = getOrCreateEntityManager(); session = ( (HibernateEntityManager) em ).getSession(); // defaults... assertEquals( CacheStoreMode.USE, em.getProperties().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheRetrieveMode.USE, em.getProperties().get( AvailableSettings.SHARED_CACHE_RETRIEVE_MODE ) ); assertEquals( CacheMode.NORMAL, session.getCacheMode() ); // overrides... em.setProperty( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.REFRESH ); assertEquals( CacheStoreMode.REFRESH, em.getProperties().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.REFRESH, session.getCacheMode() ); em.setProperty( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.BYPASS ); assertEquals( CacheStoreMode.BYPASS, em.getProperties().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.GET, session.getCacheMode() ); em.setProperty( AvailableSettings.SHARED_CACHE_RETRIEVE_MODE, CacheRetrieveMode.BYPASS ); assertEquals( CacheRetrieveMode.BYPASS, em.getProperties().get( AvailableSettings.SHARED_CACHE_RETRIEVE_MODE ) ); assertEquals( CacheMode.IGNORE, session.getCacheMode() ); em.setProperty( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.USE ); assertEquals( CacheStoreMode.USE, em.getProperties().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.PUT, session.getCacheMode() ); em.setProperty( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.REFRESH ); assertEquals( CacheStoreMode.REFRESH, em.getProperties().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.REFRESH, session.getCacheMode() ); } @Test public void testQueryCacheModes() { EntityManager em = getOrCreateEntityManager(); org.hibernate.query.Query query = em.createQuery( "from SimpleEntity" ).unwrap( org.hibernate.query.Query.class ); query.setHint( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.USE ); assertEquals( CacheStoreMode.USE, query.getHints().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.NORMAL, query.getCacheMode() ); query.setHint( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.BYPASS ); assertEquals( CacheStoreMode.BYPASS, query.getHints().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.GET, query.getCacheMode() ); query.setHint( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.REFRESH ); assertEquals( CacheStoreMode.REFRESH, query.getHints().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.REFRESH, query.getCacheMode() ); query.setHint( AvailableSettings.SHARED_CACHE_RETRIEVE_MODE, CacheRetrieveMode.BYPASS ); assertEquals( CacheRetrieveMode.BYPASS, query.getHints().get( AvailableSettings.SHARED_CACHE_RETRIEVE_MODE ) ); assertEquals( CacheStoreMode.REFRESH, query.getHints().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.REFRESH, query.getCacheMode() ); query.setHint( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.BYPASS ); assertEquals( CacheRetrieveMode.BYPASS, query.getHints().get( AvailableSettings.SHARED_CACHE_RETRIEVE_MODE ) ); assertEquals( CacheStoreMode.BYPASS, query.getHints().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.IGNORE, query.getCacheMode() ); query.setHint( AvailableSettings.SHARED_CACHE_STORE_MODE, CacheStoreMode.USE ); assertEquals( CacheRetrieveMode.BYPASS, query.getHints().get( AvailableSettings.SHARED_CACHE_RETRIEVE_MODE ) ); assertEquals( CacheStoreMode.USE, query.getHints().get( AvailableSettings.SHARED_CACHE_STORE_MODE ) ); assertEquals( CacheMode.PUT, query.getCacheMode() ); } }