@Override public double getValue(Statistics statistics) { return statistics.getNaturalIdCacheHitCount(); } }
@Test @TestForIssue( jiraKey = "HHH-7278" ) public void testInsertedNaturalIdCachedAfterTransactionSuccess() { Session session = openSession(); session.getSessionFactory().getStatistics().clear(); session.beginTransaction(); Another it = new Another( "it"); session.save( it ); session.flush(); session.getTransaction().commit(); session.close(); session = openSession(); session.beginTransaction(); it = (Another) session.bySimpleNaturalId(Another.class).load("it"); assertNotNull(it); session.delete(it); session.getTransaction().commit(); assertEquals(1, session.getSessionFactory().getStatistics().getNaturalIdCacheHitCount()); }
@Test @TestForIssue( jiraKey = "HHH-7309" ) public void testInsertUpdateEntity_NaturalIdCachedAfterTransactionSuccess() { Session session = openSession(); session.getSessionFactory().getStatistics().clear(); session.beginTransaction(); Another it = new Another( "it"); session.save( it ); // schedules an InsertAction it.setSurname("1234"); // schedules an UpdateAction, without bug-fix // this will re-cache natural-id with identical key and at same time invalidate it session.flush(); session.getTransaction().commit(); session.close(); session = openSession(); session.beginTransaction(); it = (Another) session.bySimpleNaturalId(Another.class).load("it"); assertNotNull(it); session.delete(it); session.getTransaction().commit(); assertEquals("In a strict access strategy we would excpect a hit here", 1, session.getSessionFactory().getStatistics().getNaturalIdCacheHitCount()); }
session.close(); assertEquals(1, session.getSessionFactory().getStatistics().getNaturalIdCacheHitCount());
@Test @TestForIssue( jiraKey = "HHH-7278" ) public void testInsertedNaturalIdNotCachedAfterTransactionFailure() { Session session = openSession(); session.getSessionFactory().getStatistics().clear(); session.beginTransaction(); Another it = new Another( "it"); session.save( it ); session.flush(); session.getTransaction().rollback(); session.close(); session = openSession(); session.beginTransaction(); it = (Another) session.bySimpleNaturalId(Another.class).load("it"); assertNull(it); assertEquals(0, session.getSessionFactory().getStatistics().getNaturalIdCacheHitCount()); }
session.close(); assertEquals(0, session.getSessionFactory().getStatistics().getNaturalIdCacheHitCount());
assertEquals( "Cache hits should be empty", 0, stats .getNaturalIdCacheHitCount() ); assertEquals( "Cache hits should be empty", 0, stats .getNaturalIdCacheHitCount() ); assertEquals( assertEquals( "Cache hits should be empty", 0, stats .getNaturalIdCacheHitCount() ); assertEquals(
stats.setStatisticsEnabled( true ); stats.clear(); assertEquals( "Cache hits should be empty", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "Cache puts should be empty", 0, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 1, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 1, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 1, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 1, stats.getNaturalIdCachePutCount() );
it = session.bySimpleNaturalId(Another.class).load("it"); assertNull(it); assertEquals( 0, session.getSessionFactory().getStatistics().getNaturalIdCacheHitCount() ); it = session.byId(Another.class).load(id); session.delete(it);
1, s.getSessionFactory().getStatistics().getNaturalIdCacheHitCount() );
1, s.getSessionFactory().getStatistics().getNaturalIdCacheHitCount() ); s.createQuery( "delete from D" ).executeUpdate();
1, s.getSessionFactory().getStatistics().getNaturalIdCacheHitCount() ); s.createQuery( "delete from A" ).executeUpdate();
stats.clear(); assertEquals( "NaturalId cache puts should be zero", 0, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId cache hits should be zero", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Puts", 0, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId cache misses should be zero", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 1, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 2, stats.getNaturalIdCachePutCount() ); // one for Citizen, one for NaturalIdOnManyToOne assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 1, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 2, stats.getNaturalIdCachePutCount() );
@Test public void testNaturalIdLoaderNotCached() { saveSomeCitizens(); Session s = openSession(); Transaction tx = s.beginTransaction(); State france = this.getState( s, "Ile de France" ); final NaturalIdLoadAccess naturalIdLoader = s.byNaturalId( Citizen.class ); naturalIdLoader.using( "ssn", "1234" ).using( "state", france ); //NaturalId cache gets populated during entity loading, need to clear it out this.cleanupCache(); Statistics stats = sessionFactory().getStatistics(); stats.setStatisticsEnabled( true ); stats.clear(); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 0, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Queries", 0, stats.getNaturalIdQueryExecutionCount() ); // first query Citizen citizen = (Citizen)naturalIdLoader.load(); assertNotNull( citizen ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 1, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 1, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Queries", 1, stats.getNaturalIdQueryExecutionCount() ); // cleanup tx.rollback(); s.close(); }
stats.clear(); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 0, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 2, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 1, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 0, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 1, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 1, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 0, stats.getNaturalIdCachePutCount() );
public long getNaturalIdCacheHitCount() { return stats.getNaturalIdCacheHitCount(); }
public long getNaturalIdCacheHitCount() { return stats.getNaturalIdCacheHitCount(); }
assertEquals( "Cache hits should be empty", 0, stats .getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 1, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 1, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 1, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 1, stats.getNaturalIdCachePutCount() );
stats.clear(); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 0, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 2, stats.getNaturalIdCachePutCount() ); assertEquals("NaturalId Cache Hits", 1, stats.getNaturalIdCacheHitCount()); assertEquals("NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount()); assertEquals("NaturalId Cache Puts", 0, stats.getNaturalIdCachePutCount()); assertEquals( "NaturalId Cache Hits", 0, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 1, stats.getNaturalIdCachePutCount() ); assertEquals( "NaturalId Cache Hits", 1, stats.getNaturalIdCacheHitCount() ); assertEquals( "NaturalId Cache Misses", 0, stats.getNaturalIdCacheMissCount() ); assertEquals( "NaturalId Cache Puts", 0, stats.getNaturalIdCachePutCount() );