From: <hib...@li...> - 2006-03-10 17:09:31
|
Author: ste...@jb... Date: 2006-03-10 12:09:27 -0500 (Fri, 10 Mar 2006) New Revision: 9594 Added: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Other.java Modified: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/AggressiveReleaseTest.java branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Silly.hbm.xml branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Silly.java Log: HHH-1555 : maintain connections during flush even with aggressive release Modified: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/AggressiveReleaseTest.java =================================================================== --- branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/AggressiveReleaseTest.java 2006-03-10 17:08:38 UTC (rev 9593) +++ branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/AggressiveReleaseTest.java 2006-03-10 17:09:27 UTC (rev 9594) @@ -4,6 +4,7 @@ import org.hibernate.Session; import org.hibernate.ConnectionReleaseMode; import org.hibernate.ScrollableResults; +import org.hibernate.transaction.CMTTransactionFactory; import org.hibernate.impl.SessionImpl; import org.hibernate.util.SerializationHelper; import org.hibernate.test.tm.DummyConnectionProvider; @@ -16,6 +17,9 @@ import junit.framework.TestSuite; import java.sql.Connection; +import java.util.List; +import java.util.ArrayList; +import java.util.Iterator; /** * Implementation of AggressiveReleaseTest. @@ -33,9 +37,13 @@ } protected void configure(Configuration cfg) { + super.configure( cfg ); cfg.setProperty( Environment.RELEASE_CONNECTIONS, ConnectionReleaseMode.AFTER_STATEMENT.toString() ); cfg.setProperty( Environment.CONNECTION_PROVIDER, DummyConnectionProvider.class.getName() ); + cfg.setProperty( Environment.TRANSACTION_STRATEGY, CMTTransactionFactory.class.getName() ); cfg.setProperty( Environment.TRANSACTION_MANAGER_STRATEGY, DummyTransactionManagerLookup.class.getName() ); + cfg.setProperty( Environment.GENERATE_STATISTICS, "true" ); + cfg.setProperty( Environment.STATEMENT_BATCH_SIZE, "0" ); } protected Session getSessionUnderTest() throws Throwable { @@ -144,4 +152,35 @@ release( s ); done(); } + + public void testConnectionMaintanenceDuringFlush() throws Throwable { + prepare(); + Session s = getSessionUnderTest(); + s.beginTransaction(); + + List entities = new ArrayList(); + for ( int i = 0; i < 10; i++ ) { + Other other = new Other( "other-" + i ); + Silly silly = new Silly( "silly-" + i, other ); + entities.add( silly ); + s.save( silly ); + } + s.flush(); + + Iterator itr = entities.iterator(); + while ( itr.hasNext() ) { + Silly silly = ( Silly ) itr.next(); + silly.setName( "new-" + silly.getName() ); + silly.getOther().setName( "new-" + silly.getOther().getName() ); + } + long initialCount = getSessions().getStatistics().getConnectCount(); + s.flush(); + assertEquals( "connection not maintained through flush", initialCount + 1, getSessions().getStatistics().getConnectCount() ); + + s.createQuery( "delete from Silly" ).executeUpdate(); + s.createQuery( "delete from Other" ).executeUpdate(); + s.getTransaction().commit(); + release( s ); + done(); + } } Added: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Other.java =================================================================== --- branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Other.java 2006-03-10 17:08:38 UTC (rev 9593) +++ branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Other.java 2006-03-10 17:09:27 UTC (rev 9594) @@ -0,0 +1,32 @@ +package org.hibernate.test.connections; + +/** + * @author Steve Ebersole + */ +public class Other { + private Long id; + private String name; + + public Other() { + } + + public Other(String name) { + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} Modified: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Silly.hbm.xml =================================================================== --- branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Silly.hbm.xml 2006-03-10 17:08:38 UTC (rev 9593) +++ branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Silly.hbm.xml 2006-03-10 17:09:27 UTC (rev 9594) @@ -10,6 +10,14 @@ <generator class="native"/> </id> <property name="name"/> + <many-to-one name="other" class="Other" cascade="all"/> + </class> + + <class name="Other"> + <id name="id" type="long"> + <generator class="native"/> + </id> + <property name="name"/> </class> </hibernate-mapping> \ No newline at end of file Modified: branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Silly.java =================================================================== --- branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Silly.java 2006-03-10 17:08:38 UTC (rev 9593) +++ branches/Branch_3_1/Hibernate3/test/org/hibernate/test/connections/Silly.java 2006-03-10 17:09:27 UTC (rev 9594) @@ -11,6 +11,7 @@ public class Silly implements Serializable { private Long id; private String name; + private Other other; public Silly() { } @@ -19,6 +20,11 @@ this.name = name; } + public Silly(String name, Other other) { + this.name = name; + this.other = other; + } + public Long getId() { return id; } @@ -34,4 +40,12 @@ public void setName(String name) { this.name = name; } + + public Other getOther() { + return other; + } + + public void setOther(Other other) { + this.other = other; + } } |