aggressivereleasetest.java

来自「hibernate-3.0.5 中文文档」· Java 代码 · 共 93 行

JAVA
93
字号
// $Id: AggressiveReleaseTest.java,v 1.2 2005/05/12 18:27:21 steveebersole Exp $package org.hibernate.test.connections;import org.hibernate.Session;import org.hibernate.ConnectionReleaseMode;import org.hibernate.ScrollableResults;import org.hibernate.util.SerializationHelper;import org.hibernate.test.tm.DummyConnectionProvider;import org.hibernate.test.tm.DummyTransactionManagerLookup;import org.hibernate.test.tm.DummyTransactionManager;import org.hibernate.cfg.Configuration;import org.hibernate.cfg.Environment;import junit.framework.Test;import junit.framework.TestSuite;/** * Implementation of AggressiveReleaseTest. * * @author Steve Ebersole */public class AggressiveReleaseTest extends ConnectionManagementTestCase {	public AggressiveReleaseTest(String name) {		super( name );	}	public static Test suite() {		return new TestSuite( AggressiveReleaseTest.class );	}	protected Session getSessionUnderTest() {		return openSession();	}	protected void reconnect(Session session) {		session.reconnect();	}	protected void configure(Configuration cfg) {		cfg.setProperty( Environment.RELEASE_CONNECTIONS, ConnectionReleaseMode.AFTER_STATEMENT.toString() );		cfg.setProperty( Environment.CONNECTION_PROVIDER, DummyConnectionProvider.class.getName() );		cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, DummyTransactionManagerLookup.class.getName() );	}	// Some additional tests specifically for the aggressive-release functionality...	public void testSerializationOnAfterStatementAggressiveRelease() throws Throwable {		DummyTransactionManager.INSTANCE.begin();		Session s = openSession();		Silly silly = new Silly( "silly" );		s.save( silly );		// this should cause the CM to obtain a connection, and then release it		s.flush();		// We should be able to serialize the session at this point...		SerializationHelper.serialize( s );		release( s );		DummyTransactionManager.INSTANCE.rollback();	}	public void testSerializationFailsOnAfterStatementAggressiveReleaseWithOpenResources() throws Throwable {		DummyTransactionManager.INSTANCE.begin();		Session s = openSession();		// both scroll() and iterate() cause the batcher to hold on		// to resources, which should make aggresive-release not release		// the connection (and thus cause serialization to fail)		ScrollableResults sr = s.createQuery( "from Silly" ).scroll();		try {			SerializationHelper.serialize( s );			fail( "Serialization allowed on connected session; or aggressive release released connection with open resources" );		}		catch( IllegalStateException e ) {			// expected behavior		}		// Closing the ScrollableResults does currently force the batcher to		// aggressively release the connection		sr.close();		SerializationHelper.serialize( s );		release( s );		DummyTransactionManager.INSTANCE.rollback();	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?