Java Code Examples for org.hibernate.Session#persist()

The following examples show how to use org.hibernate.Session#persist() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: BackrefCompositeMapKeyTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 6 votes vote down vote up
public void testOrphanDeleteAfterPersist() {
	Session session = openSession();
	Transaction t = session.beginTransaction();
	Product prod = new Product( "Widget" );
	Part part = new Part( "Widge", "part if a Widget" );
	MapKey mapKey = new MapKey( "Top" );
	prod.getParts().put( mapKey, part );
	Part part2 = new Part( "Get", "another part if a Widget" );
	prod.getParts().put( new MapKey( "Bottom" ), part2 );
	session.persist( prod );

	prod.getParts().remove( mapKey );

	t.commit();
	session.close();

	session = openSession();
	t = session.beginTransaction();
	session.delete( session.get(Product.class, "Widget") );
	t.commit();
	session.close();
}
 
Example 2
Source File: ASTParserLoadingTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 6 votes vote down vote up
public void testImplicitJoin() throws Exception {
	Session session = openSession();
	Transaction t = session.beginTransaction();
	Animal a = new Animal();
	a.setBodyWeight(0.5f);
	a.setBodyWeight(1.5f);
	Animal b = new Animal();
	Animal mother = new Animal();
	mother.setBodyWeight(10.0f);
	mother.addOffspring(a);
	mother.addOffspring(b);
	session.persist(a);
	session.persist(b);
	session.persist(mother);
	List list = session.createQuery("from Animal a where a.mother.bodyWeight < 2.0 or a.mother.bodyWeight > 9.0").list();
	assertEquals( list.size(), 2 );
	list = session.createQuery("from Animal a where a.mother.bodyWeight > 2.0 and a.mother.bodyWeight > 9.0").list();
	assertEquals( list.size(), 2 );
	session.delete(b);
	session.delete(a);
	session.delete(mother);
	t.commit();
	session.close();
}
 
Example 3
Source File: IdentityGeneratedKeysTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 6 votes vote down vote up
public void testPersistOutsideTransactionCascadedToManyToOne() {
	long initialInsertCount = sfi().getStatistics().getEntityInsertCount();
	Session s = openSession();
	MyEntity myEntity = new MyEntity( "test-persist");
	myEntity.setSibling( new MySibling( "test-persist-sibling-out" ) );
	s.persist( myEntity );
	assertEquals( "persist on identity column not delayed", initialInsertCount, sfi().getStatistics().getEntityInsertCount() );
	assertNull( myEntity.getId() );
	s.flush();
	assertEquals( "delayed persist insert not executed on flush", initialInsertCount + 2, sfi().getStatistics().getEntityInsertCount() );
	s.close();

	s = openSession();
	s.beginTransaction();
	s.createQuery( "delete MyEntity" ).executeUpdate();
	s.createQuery( "delete MySibling" ).executeUpdate();
	s.getTransaction().commit();
	s.close();
}
 
Example 4
Source File: AbstractCachingDemo.java    From HibernateDemos with The Unlicense 6 votes vote down vote up
public long persistData() {
	final Project project = new Project();
	project.setName( "Foo Project" );
	final User user = new User();
	user.setName( "Brett Meyer" );
	final Skill skill = new Skill();
	skill.setName( "Hibernate ORM" );
	user.getSkills().add( skill );
	user.getProjects().add( project );
	project.setAssignee( user );
	
	final Session s = openSession();
	s.getTransaction().begin();
	s.persist(skill);
	s.persist(user);
	s.persist(project);
	s.getTransaction().commit();
	s.close();
	
	return project.getId();
}
 
Example 5
Source File: ASTParserLoadingTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 5 votes vote down vote up
public void testSelectClauseImplicitJoinWithIterate() {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Zoo zoo = new Zoo();
	zoo.setName("The Zoo");
	zoo.setMammals( new HashMap() );
	zoo.setAnimals( new HashMap() );
	Mammal plat = new Mammal();
	plat.setBodyWeight( 11f );
	plat.setDescription( "Platypus" );
	plat.setZoo(zoo);
	plat.setSerialNumber("plat123");
	zoo.getMammals().put("Platypus", plat);
	zoo.getAnimals().put("plat123", plat);
	s.persist( plat );
	s.persist(zoo);
	s.flush();
	s.clear();
	Query q = s.createQuery("select distinct a.zoo from Animal a where a.zoo is not null");
	Type type = q.getReturnTypes()[0];
	assertTrue( type instanceof ManyToOneType );
	assertEquals( ( (ManyToOneType) type ).getAssociatedEntityName(), "org.hibernate.test.hql.Zoo" );
	zoo = (Zoo) q
		.iterate().next();
	assertEquals( zoo.getMammals().size(), 1 );
	assertEquals( zoo.getAnimals().size(), 1 );
	s.clear();
	s.delete(plat);
	s.delete(zoo);
	t.commit();
	s.close();
}
 
Example 6
Source File: MergeTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 5 votes vote down vote up
public void testNoExtraUpdatesOnMergeWithCollection() throws Exception {
	Session s = openSession();
       s.beginTransaction();
	Node parent = new Node( "parent" );
	Node child = new Node( "child" );
	parent.getChildren().add( child );
	child.setParent( parent );
	s.persist( parent );
	s.getTransaction().commit();
	s.close();

	clearCounts();

	// parent is now detached, but we have made no changes.  so attempt to merge it
	// into this new session; this should cause no updates...
	s = openSession();
	s.beginTransaction();
	parent = ( Node ) s.merge( parent );
	s.getTransaction().commit();
	s.close();

	assertUpdateCount( 0 );
	assertInsertCount( 0 );

	///////////////////////////////////////////////////////////////////////
	// as a control measure, now update the node while it is detached and
	// make sure we get an update as a result...
	( ( Node ) parent.getChildren().iterator().next() ).setDescription( "child's new description" );
	parent.getChildren().add( new Node( "second child" ) );
	s = openSession();
	s.beginTransaction();
	parent = ( Node ) s.merge( parent );
	s.getTransaction().commit();
	s.close();
	assertUpdateCount( 1 );
	assertInsertCount( 1 );
	///////////////////////////////////////////////////////////////////////

	cleanup();
}
 
Example 7
Source File: EnrollmentDaoImpl.java    From Spring-MVC-Blueprints with MIT License 5 votes vote down vote up
@Transactional
@Override
public void setCourse(Tblstudentgrades enrolledCourse) {
	Session session = this.sessionFactory.openSession();
	Transaction transaction = session.beginTransaction();
	
       session.persist(enrolledCourse);
       transaction.commit();
       session.close();

}
 
Example 8
Source File: MergeTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 5 votes vote down vote up
public void testMergeBidiPrimayKeyOneToOne() throws Exception {
	Session s = openSession();
       s.beginTransaction();
	Person p = new Person( "steve" );
	new PersonalDetails( "I have big feet", p );
	s.persist( p );
	s.getTransaction().commit();
	s.close();

	clearCounts();

	p.getDetails().setSomePersonalDetail( p.getDetails().getSomePersonalDetail() + " and big hands too" );
	s = openSession();
       s.beginTransaction();
	p = ( Person ) s.merge( p );
	s.getTransaction().commit();
	s.close();

	assertInsertCount( 0 );
	assertUpdateCount( 1 );
	assertDeleteCount( 0 );

	s = openSession();
       s.beginTransaction();
	s.delete( p );
	s.getTransaction().commit();
	s.close();
}
 
Example 9
Source File: StatsTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 5 votes vote down vote up
private Continent fillDb(Session s) {
	Continent europe = new Continent();
	europe.setName("Europe");
	Country france = new Country();
	france.setName("France");
	europe.setCountries( new HashSet() );
	europe.getCountries().add(france);
	s.persist(france);
	s.persist(europe);
	return europe;
}
 
Example 10
Source File: CascadeTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 5 votes vote down vote up
public void testManyToOneGeneratedIds() {
	// NOTES: Child defines a many-to-one back to its Parent.  This
	// association does not define persist cascading (which is natural;
	// a child should not be able to create its parent).
	try {
		Session s = openSession();
		s.beginTransaction();
		Parent p = new Parent( "parent" );
		Child c = new Child( "child" );
		c.setParent( p );
		s.persist( c );
		try {
			s.getTransaction().commit();
			fail( "expecting TransientObjectException on flush" );
		}
		catch( TransientObjectException e ) {
			// expected result
			log.trace( "handled expected exception", e );
			s.getTransaction().rollback();
		}
		finally {
			s.close();
		}
	}
	finally {
		cleanupData();
	}
}
 
Example 11
Source File: EmbeddedCompositeIdTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 5 votes vote down vote up
public void testMerging() {
	// Test HHH-799
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Course course = new Course( "EN-101", "BA", "preparatory english" );
	s.persist( course );
	t.commit();
	s.close();

	String newDesc = "basic preparatory english";
	course.setDescription( newDesc );

	s = openSession();
	t = s.beginTransaction();
	Course c = (Course) s.merge( course );
	assertEquals( "description not merged", newDesc, c.getDescription() );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Course cid = new Course( "EN-101", "BA", null );
	course = ( Course ) s.get( Course.class, cid );
	assertEquals( "description not merged", newDesc, course.getDescription() );
	s.delete( course );
	t.commit();
	s.close();
}
 
Example 12
Source File: MergeTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 5 votes vote down vote up
public void testNoExtraUpdatesOnMergeVersioned() throws Exception {
Session s = openSession();
      s.beginTransaction();
VersionedEntity entity = new VersionedEntity( "entity", "entity" );
s.persist( entity );
s.getTransaction().commit();
s.close();

clearCounts();

// entity is now detached, but we have made no changes.  so attempt to merge it
// into this new session; this should cause no updates...
s = openSession();
s.beginTransaction();
VersionedEntity mergedEntity = ( VersionedEntity ) s.merge( entity );
s.getTransaction().commit();
s.close();

assertUpdateCount( 0 );
assertInsertCount( 0 );
      assertEquals( "unexpected version increment", entity.getVersion(), mergedEntity.getVersion() );


///////////////////////////////////////////////////////////////////////
// as a control measure, now update the node while it is detached and
// make sure we get an update as a result...
entity.setName( "new name" );
s = openSession();
s.beginTransaction();
entity = ( VersionedEntity ) s.merge( entity );
s.getTransaction().commit();
s.close();
assertUpdateCount( 1 );
assertInsertCount( 0 );
///////////////////////////////////////////////////////////////////////

cleanup();
  }
 
Example 13
Source File: BasicOrmDemo.java    From hibernate-demos with Apache License 2.0 5 votes vote down vote up
/**
 * Insert skill.
 *
 * @param skill the skill
 * @throws SQLException the SQL exception
 */
private static void insertSkill(Skill skill) throws SQLException {
	Session session = openSession();
	session.getTransaction().begin();
	session.persist( skill );
	session.getTransaction().commit();
}
 
Example 14
Source File: PartialComponentPropertyRefTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
public void testComponentPropertyRef() {
	Person p = new Person();
	p.setIdentity( new Identity() );
	Account a = new Account();
	a.setNumber("123-12345-1236");
	a.setOwner(p);
	p.getIdentity().setName("Gavin");
	p.getIdentity().setSsn("123-12-1234");
	Session s = openSession();
	Transaction tx = s.beginTransaction();
	s.persist(p);
	s.persist(a);
	s.flush();
	s.clear();
	
	a = (Account) s.createQuery("from Account a left join fetch a.owner").uniqueResult();
	assertTrue( Hibernate.isInitialized( a.getOwner() ) );
	assertNotNull( a.getOwner() );
	assertEquals( "Gavin", a.getOwner().getIdentity().getName() );
	s.clear();
	
	a = (Account) s.get(Account.class, "123-12345-1236");
	assertFalse( Hibernate.isInitialized( a.getOwner() ) );
	assertNotNull( a.getOwner() );
	assertEquals( "Gavin", a.getOwner().getIdentity().getName() );
	assertTrue( Hibernate.isInitialized( a.getOwner() ) );
	
	s.clear();
	
	getSessions().evict(Account.class);
	getSessions().evict(Person.class);
	
	a = (Account) s.get(Account.class, "123-12345-1236");
	assertTrue( Hibernate.isInitialized( a.getOwner() ) );
	assertNotNull( a.getOwner() );
	assertEquals( "Gavin", a.getOwner().getIdentity().getName() );
	assertTrue( Hibernate.isInitialized( a.getOwner() ) );
	
	s.delete( a );
	s.delete( a.getOwner() );
	tx.commit();
	s.close();
}
 
Example 15
Source File: EmbeddedCompositeIdTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
public void testPolymorphism() {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Course uc =  new UniversityCourse("mat2000", "Monash", "second year maths", 0);
	Course c =  new Course("eng5000", "BHS", "grade 5 english");
	s.persist(uc);
	s.persist(c);
	t.commit();
	s.close();
	
	s = openSession();
	t = s.beginTransaction();
	Course ucid = new Course("mat2000", "Monash", null);
	Course cid =  new Course("eng5000", "BHS", null);
	Course luc = (Course) s.load(Course.class, ucid);
	Course lc = (Course) s.load(Course.class, cid);
	assertFalse( Hibernate.isInitialized(luc) );
	assertFalse( Hibernate.isInitialized(lc) );
	assertEquals( UniversityCourse.class, Hibernate.getClass(luc) );
	assertEquals( Course.class, Hibernate.getClass(lc) );
	assertSame( ( (HibernateProxy) lc ).getHibernateLazyInitializer().getImplementation(), cid );
	assertEquals( c.getCourseCode(), "eng5000" );
	assertEquals( uc.getCourseCode(), "mat2000" );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	ucid = new Course("mat2000", "Monash", null);
	cid =  new Course("eng5000", "BHS", null);
	luc = (Course) s.get(Course.class, ucid);
	lc = (Course) s.get(Course.class, cid);
	assertTrue( Hibernate.isInitialized(luc) );
	assertTrue( Hibernate.isInitialized(lc) );
	assertEquals( UniversityCourse.class, Hibernate.getClass(luc) );
	assertEquals( Course.class, Hibernate.getClass(lc) );
	assertSame( lc, cid );
	assertEquals( c.getCourseCode(), "eng5000" );
	assertEquals( uc.getCourseCode(), "mat2000" );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	List list = s.createQuery("from Course order by courseCode").list();
	assertTrue( list.get(0) instanceof Course );
	assertTrue( list.get(1) instanceof UniversityCourse );
	c = (Course) list.get(0);
	uc = (UniversityCourse) list.get(1);
	assertEquals( c.getCourseCode(), "eng5000" );
	assertEquals( uc.getCourseCode(), "mat2000" );
	t.commit();
	s.close();
	
	c.setDescription("Grade 5 English");
	uc.setDescription("Second year mathematics");
	
	s = openSession();
	t = s.beginTransaction();
	s.saveOrUpdate(c);
	s.saveOrUpdate(uc);
	t.commit();
	s.close();
	
	s = openSession();
	t = s.beginTransaction();
	s.delete(c);
	s.delete(uc);
	t.commit();
	s.close();
	
}
 
Example 16
Source File: ManyToOneTest.java    From hibernate-ogm-ignite with GNU Lesser General Public License v2.1 4 votes vote down vote up
@Test
public void testBiDirManyToOneInsertUpdateFalse() throws Exception {
	final Session session = openSession();
	Transaction tx = session.beginTransaction();
	Beer hoegaarden = new Beer();
	Brewery hoeBrewery = new Brewery();
	hoeBrewery.getBeers().add( hoegaarden );
	hoegaarden.setBrewery( hoeBrewery );
	session.persist( hoeBrewery );
	tx.commit();
	session.clear();

	tx = session.beginTransaction();
	hoegaarden = get( session, Beer.class, hoegaarden.getId() );
	assertThat( hoegaarden ).isNotNull();
	assertThat( hoegaarden.getBrewery() ).isNotNull();
	assertThat( hoegaarden.getBrewery().getBeers() )
		.hasSize( 1 )
		.containsOnly( hoegaarden );
	Beer citron = new Beer();
	hoeBrewery = hoegaarden.getBrewery();
	hoeBrewery.getBeers().remove( hoegaarden );
	hoeBrewery.getBeers().add( citron );
	citron.setBrewery( hoeBrewery );
	session.delete( hoegaarden );
	tx.commit();

	session.clear();

	tx = session.beginTransaction();
	citron = get( session, Beer.class, citron.getId() );
	assertThat( citron.getBrewery().getBeers() )
		.hasSize( 1 )
		.containsOnly( citron );
	hoeBrewery = citron.getBrewery();
	citron.setBrewery( null );
	hoeBrewery.getBeers().clear();
	session.delete( citron );
	session.delete( hoeBrewery );
	tx.commit();

	session.close();

	checkCleanCache();
}
 
Example 17
Source File: MergeTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
public void testNoExtraUpdatesOnMergeVersionedWithCollection() throws Exception {
Session s = openSession();
      s.beginTransaction();
VersionedEntity parent = new VersionedEntity( "parent", "parent" );
VersionedEntity child = new VersionedEntity( "child", "child" );
parent.getChildren().add( child );
child.setParent( parent );
s.persist( parent );
s.getTransaction().commit();
s.close();

clearCounts();

// parent is now detached, but we have made no changes.  so attempt to merge it
// into this new session; this should cause no updates...
s = openSession();
s.beginTransaction();
VersionedEntity mergedParent = ( VersionedEntity ) s.merge( parent );
s.getTransaction().commit();
s.close();

assertUpdateCount( 0 );
assertInsertCount( 0 );
assertEquals( "unexpected parent version increment", parent.getVersion(), mergedParent.getVersion() );
VersionedEntity mergedChild = ( VersionedEntity ) mergedParent.getChildren().iterator().next();
assertEquals( "unexpected child version increment", child.getVersion(), mergedChild.getVersion() );

///////////////////////////////////////////////////////////////////////
// as a control measure, now update the node while it is detached and
// make sure we get an update as a result...
mergedParent.setName( "new name" );
mergedParent.getChildren().add( new VersionedEntity( "child2", "new child" ) );
s = openSession();
s.beginTransaction();
parent = ( VersionedEntity ) s.merge( mergedParent );
s.getTransaction().commit();
s.close();
assertUpdateCount( 1 );
assertInsertCount( 1 );
///////////////////////////////////////////////////////////////////////

cleanup();
  }
 
Example 18
Source File: MergeTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
public void testMergeManyToManyWithCollectionDeference() throws Exception {
	// setup base data...
	Session s = openSession();
	Transaction tx = s.beginTransaction();
	Competition competition = new Competition();
	competition.getCompetitors().add( new Competitor( "Name" ) );
	competition.getCompetitors().add( new Competitor() );
	competition.getCompetitors().add( new Competitor() );
	s.persist( competition );
	tx.commit();
	s.close();

	// the competition graph is now detached:
	//   1) create a new List reference to represent the competitors
	s = openSession();
	tx = s.beginTransaction();
	List newComp = new ArrayList();
	Competitor originalCompetitor = ( Competitor ) competition.getCompetitors().get( 0 );
	originalCompetitor.setName( "Name2" );
	newComp.add( originalCompetitor );
	newComp.add( new Competitor() );
	//   2) set that new List reference unto the Competition reference
	competition.setCompetitors( newComp );
	//   3) attempt the merge
	Competition competition2 = ( Competition ) s.merge( competition );
	tx.commit();
	s.close();

	assertFalse( competition == competition2 );
	assertFalse( competition.getCompetitors() == competition2.getCompetitors() );
	assertEquals( 2, competition2.getCompetitors().size() );

	s = openSession();
	tx = s.beginTransaction();
	competition = ( Competition ) s.get( Competition.class, competition.getId() );
	assertEquals( 2, competition.getCompetitors().size() );
	s.delete( competition );
	tx.commit();
	s.close();

	cleanup();
}
 
Example 19
Source File: SybaseTimestampVersioningTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
public void testCollectionVersion() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	User steve = new User( "steve" );
	s.persist( steve );
	Group admin = new Group( "admin" );
	s.persist( admin );
	t.commit();
	s.close();

	byte[] steveTimestamp = steve.getTimestamp();

	s = openSession();
	t = s.beginTransaction();
	steve = ( User ) s.get( User.class, steve.getId() );
	admin = ( Group ) s.get( Group.class, admin.getId() );
	steve.getGroups().add( admin );
	admin.getUsers().add( steve );
	t.commit();
	s.close();

	assertFalse( "owner version not incremented", Hibernate.BINARY.isEqual( steveTimestamp, steve.getTimestamp() ) );

	steveTimestamp = steve.getTimestamp();

	s = openSession();
	t = s.beginTransaction();
	steve = ( User ) s.get( User.class, steve.getId() );
	steve.getGroups().clear();
	t.commit();
	s.close();

	assertFalse( "owner version not incremented", Hibernate.BINARY.isEqual( steveTimestamp, steve.getTimestamp() ) );

	s = openSession();
	t = s.beginTransaction();
	s.delete( s.load( User.class, steve.getId() ) );
	s.delete( s.load( Group.class, admin.getId() ) );
	t.commit();
	s.close();
}
 
Example 20
Source File: CMTTest.java    From cacheonix-core with GNU Lesser General Public License v2.1 4 votes vote down vote up
public void testConcurrentCachedQueries() throws Exception {

		DummyTransactionManager.INSTANCE.begin();
		Session s = openSession();
		Map foo = new HashMap();
		foo.put( "name", "Foo" );
		foo.put( "description", "a big foo" );
		s.persist( "Item", foo );
		Map bar = new HashMap();
		bar.put( "name", "Bar" );
		bar.put( "description", "a small bar" );
		s.persist( "Item", bar );
		DummyTransactionManager.INSTANCE.commit();

		synchronized ( this ) {
			wait( 1000 );
		}

		getSessions().getStatistics().clear();

		getSessions().evictEntity( "Item" );

		DummyTransactionManager.INSTANCE.begin();
		Session s4 = openSession();
		Transaction tx4 = DummyTransactionManager.INSTANCE.suspend();

		DummyTransactionManager.INSTANCE.begin();
		Session s1 = openSession();
		List r1 = s1.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
				.setCacheable( true ).list();
		assertEquals( r1.size(), 2 );
		Transaction tx1 = DummyTransactionManager.INSTANCE.suspend();

		DummyTransactionManager.INSTANCE.begin();
		Session s2 = openSession();
		List r2 = s2.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
				.setCacheable( true ).list();
		assertEquals( r2.size(), 2 );
		DummyTransactionManager.INSTANCE.commit();

		assertEquals( getSessions().getStatistics().getSecondLevelCacheHitCount(), 2 );
		assertEquals( getSessions().getStatistics().getSecondLevelCacheMissCount(), 0 );
		assertEquals( getSessions().getStatistics().getEntityLoadCount(), 2 );
		assertEquals( getSessions().getStatistics().getEntityFetchCount(), 0 );
		assertEquals( getSessions().getStatistics().getQueryExecutionCount(), 1 );
		assertEquals( getSessions().getStatistics().getQueryCachePutCount(), 1 );
		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 1 );
		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 1 );

		DummyTransactionManager.INSTANCE.resume( tx1 );
		tx1.commit();

		DummyTransactionManager.INSTANCE.begin();
		Session s3 = openSession();
		s3.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
				.setCacheable( true ).list();
		DummyTransactionManager.INSTANCE.commit();

		assertEquals( getSessions().getStatistics().getSecondLevelCacheHitCount(), 4 );
		assertEquals( getSessions().getStatistics().getSecondLevelCacheMissCount(), 0 );
		assertEquals( getSessions().getStatistics().getEntityLoadCount(), 2 );
		assertEquals( getSessions().getStatistics().getEntityFetchCount(), 0 );
		assertEquals( getSessions().getStatistics().getQueryExecutionCount(), 1 );
		assertEquals( getSessions().getStatistics().getQueryCachePutCount(), 1 );
		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 2 );
		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 1 );

		DummyTransactionManager.INSTANCE.resume( tx4 );
		List r4 = s4.createCriteria( "Item" ).addOrder( Order.asc( "description" ) )
				.setCacheable( true ).list();
		assertEquals( r4.size(), 2 );
		tx4.commit();

		assertEquals( getSessions().getStatistics().getSecondLevelCacheHitCount(), 6 );
		assertEquals( getSessions().getStatistics().getSecondLevelCacheMissCount(), 0 );
		assertEquals( getSessions().getStatistics().getEntityLoadCount(), 2 );
		assertEquals( getSessions().getStatistics().getEntityFetchCount(), 0 );
		assertEquals( getSessions().getStatistics().getQueryExecutionCount(), 1 );
		assertEquals( getSessions().getStatistics().getQueryCachePutCount(), 1 );
		assertEquals( getSessions().getStatistics().getQueryCacheHitCount(), 3 );
		assertEquals( getSessions().getStatistics().getQueryCacheMissCount(), 1 );

		DummyTransactionManager.INSTANCE.begin();
		s = openSession();
		s.createQuery( "delete from Item" ).executeUpdate();
		DummyTransactionManager.INSTANCE.commit();
	}