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 + -
显示快捷键?