@Override public Serializable save(Object object) { return delegate.save( object ); }
@Override public Serializable save(String entityName, Object object) { return delegate.save( entityName, object ); }
@Before public void prepareTestData() { inTransaction( entityManagerFactory(), session -> { final User wesley = new User( "Wesley", "farmboy" ); final User buttercup = new User( "Buttercup", "wishee" ); final User humperdink = new User( "Humperdink", "buffoon" ); session.save( wesley ); session.save( buttercup ); session.save( humperdink ); final Issue flameSpurt = new Issue( 1, "Flame Spurt", wesley ); final Issue lightningSand = new Issue( 2, "Lightning Sand", buttercup ); final Issue rous = new Issue( 3, "Rodents of Unusual Size", wesley ); flameSpurt.setAssignee( wesley ); lightningSand.setAssignee( wesley ); rous.setAssignee( wesley ); session.save( flameSpurt ); session.save( lightningSand ); session.save( rous ); flameSpurt.addComment( "There is a popping sound preceding each", wesley ); rous.addComment( "I don't think they exist", wesley ); } ); }
@Test public void testInsertWithRollback() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); s.getTransaction().markRollbackOnly(); } ); assertFalse( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); }
@Test public void testInsertThenUpdateThenRollback() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); item.setName( "new data" ); s.getTransaction().markRollbackOnly(); } ); assertFalse( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); }
@Test public void testInsert() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); } ); assertTrue( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); inTransaction( sessionFactory, s -> { s.createQuery( "delete CacheableItem" ).executeUpdate(); } ); }
@Test public void testInsertWithClear() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); s.clear(); } ); assertTrue( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); inTransaction( sessionFactory, s -> s.createQuery( "delete CacheableItem" ).executeUpdate() ); }
@Test public void testInsertThenUpdate() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); item.setName( "new data" ); } ); assertTrue( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); inTransaction( sessionFactory, s -> s.createQuery( "delete CacheableItem" ).executeUpdate() ); }
@Test public void testInsertWithRefresh() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); s.refresh( item ); } ); assertTrue( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); inTransaction( sessionFactory, s -> s.createQuery( "delete CacheableItem" ).executeUpdate() ); }
@Test public void testInsertWithClearThenRollback() { sessionFactory().getCache().evictEntityRegions(); sessionFactory().getStatistics().clear(); inTransaction( sessionFactory, s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); s.clear(); item = s.get( CacheableItem.class, item.getId() ); s.getTransaction().markRollbackOnly(); } ); assertFalse( sessionFactory().getCache().containsEntity( CacheableItem.class, 1L ) ); inTransaction( sessionFactory, s -> { final CacheableItem item = s.get( CacheableItem.class, 1L ); assertNull( "it should be null", item ); } ); }
s -> { CacheableItem item = new CacheableItem( "data" ); s.save( item ); s.flush(); s.refresh( item );
@Override public Object save(Object object) { return delegate.save( object ); }
@Override public Object save(String entityName, Object object) { return delegate.save( entityName, object ); }