[hibernate-commits] Hibernate SVN: r11325 - in trunk/Hibernate3: test/org/hibernate/test/idgen and 3 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Tue Mar 20 22:54:23 EDT 2007
Author: steve.ebersole at jboss.com
Date: 2007-03-20 22:54:23 -0400 (Tue, 20 Mar 2007)
New Revision: 11325
Added:
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicForcedTableSequenceTest.java
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoForcedTableSequenceTest.java
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledForcedTableSequenceTest.java
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Basic.hbm.xml
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/BasicTableTest.java
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Entity.java
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/HiLo.hbm.xml
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/HiLoTableTest.java
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Pooled.hbm.xml
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/PooledTableTest.java
Removed:
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicTableTest.java
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoTableTest.java
trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledTableTest.java
Modified:
trunk/Hibernate3/src/org/hibernate/id/enhanced/TableGenerator.java
trunk/Hibernate3/test/org/hibernate/test/idgen/IdGenSuite.java
Log:
HHH-2471 : enhanced generator : table
Modified: trunk/Hibernate3/src/org/hibernate/id/enhanced/TableGenerator.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/id/enhanced/TableGenerator.java 2007-03-21 02:23:17 UTC (rev 11324)
+++ trunk/Hibernate3/src/org/hibernate/id/enhanced/TableGenerator.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -128,6 +128,7 @@
private String update;
private Optimizer optimizer;
+ private long accessCount = 0;
public String getTableName() {
return tableName;
@@ -161,6 +162,14 @@
return incrementSize;
}
+ public Optimizer getOptimizer() {
+ return optimizer;
+ }
+
+ public long getTableAccessCount() {
+ return accessCount;
+ }
+
public void configure(Type type, Properties params, Dialect dialect) throws MappingException {
tableName = PropertiesHelper.getString( TABLE_PARAM, params, DEF_TABLE );
if ( tableName.indexOf( '.' ) < 0 ) {
@@ -269,6 +278,9 @@
}
}
while ( rows == 0 );
+
+ accessCount++;
+
return new Integer( result );
}
@@ -276,6 +288,7 @@
return new String[] {
new StringBuffer()
.append( dialect.getCreateTableString() )
+ .append( ' ' )
.append( tableName )
.append( " ( " )
.append( segmentColumnName )
Modified: trunk/Hibernate3/test/org/hibernate/test/idgen/IdGenSuite.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/IdGenSuite.java 2007-03-21 02:23:17 UTC (rev 11324)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/IdGenSuite.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -3,14 +3,17 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.hibernate.test.idgen.enhanced.OptimizerUnitTest;
+import org.hibernate.test.idgen.enhanced.SequenceStyleConfigUnitTest;
+import org.hibernate.test.idgen.enhanced.forcedtable.BasicForcedTableSequenceTest;
+import org.hibernate.test.idgen.enhanced.forcedtable.HiLoForcedTableSequenceTest;
+import org.hibernate.test.idgen.enhanced.forcedtable.PooledForcedTableSequenceTest;
import org.hibernate.test.idgen.enhanced.sequence.BasicSequenceTest;
import org.hibernate.test.idgen.enhanced.sequence.HiLoSequenceTest;
import org.hibernate.test.idgen.enhanced.sequence.PooledSequenceTest;
-import org.hibernate.test.idgen.enhanced.forcedtable.BasicTableTest;
-import org.hibernate.test.idgen.enhanced.forcedtable.HiLoTableTest;
-import org.hibernate.test.idgen.enhanced.forcedtable.PooledTableTest;
-import org.hibernate.test.idgen.enhanced.OptimizerUnitTest;
-import org.hibernate.test.idgen.enhanced.SequenceStyleConfigUnitTest;
+import org.hibernate.test.idgen.enhanced.table.BasicTableTest;
+import org.hibernate.test.idgen.enhanced.table.HiLoTableTest;
+import org.hibernate.test.idgen.enhanced.table.PooledTableTest;
/**
* {@inheritDoc}
@@ -19,15 +22,19 @@
*/
public class IdGenSuite {
public static Test suite() {
- TestSuite suite = new TestSuite( "id generators" );
+ TestSuite suite = new TestSuite( "enhanced id generators" );
suite.addTest( OptimizerUnitTest.suite() );
suite.addTest( SequenceStyleConfigUnitTest.suite() );
+ suite.addTest( BasicForcedTableSequenceTest.suite() );
+ suite.addTest( HiLoForcedTableSequenceTest.suite() );
+ suite.addTest( PooledForcedTableSequenceTest.suite() );
+
suite.addTest( BasicSequenceTest.suite() );
suite.addTest( HiLoSequenceTest.suite() );
suite.addTest( PooledSequenceTest.suite() );
-
+
suite.addTest( BasicTableTest.suite() );
suite.addTest( HiLoTableTest.suite() );
suite.addTest( PooledTableTest.suite() );
Copied: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicForcedTableSequenceTest.java (from rev 11324, trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicTableTest.java)
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicForcedTableSequenceTest.java (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicForcedTableSequenceTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,57 @@
+package org.hibernate.test.idgen.enhanced.forcedtable;
+
+import junit.framework.Test;
+
+import org.hibernate.junit.functional.DatabaseSpecificFunctionalTestCase;
+import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
+import org.hibernate.persister.entity.EntityPersister;
+import org.hibernate.id.enhanced.SequenceStyleGenerator;
+import org.hibernate.Session;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Steve Ebersole
+ */
+public class BasicForcedTableSequenceTest extends DatabaseSpecificFunctionalTestCase {
+ public BasicForcedTableSequenceTest(String string) {
+ super( string );
+ }
+
+ public String[] getMappings() {
+ return new String[] { "idgen/enhanced/forcedtable/Basic.hbm.xml" };
+ }
+
+ public static Test suite() {
+ return new FunctionalTestClassTestSuite( BasicForcedTableSequenceTest.class );
+ }
+
+ public void testNormalBoundary() {
+ EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
+ assertClassAssignability( SequenceStyleGenerator.class, persister.getIdentifierGenerator().getClass() );
+ SequenceStyleGenerator generator = ( SequenceStyleGenerator ) persister.getIdentifierGenerator();
+
+ int count = 5;
+ Entity[] entities = new Entity[count];
+ Session s = openSession();
+ s.beginTransaction();
+ for ( int i = 0; i < count; i++ ) {
+ entities[i] = new Entity( "" + ( i + 1 ) );
+ s.save( entities[i] );
+ long expectedId = i + 1;
+ assertEquals( expectedId, entities[i].getId().longValue() );
+ assertEquals( expectedId, generator.getDatabaseStructure().getTimesAccessed() );
+ assertEquals( expectedId, generator.getOptimizer().getLastSourceValue() );
+ }
+ s.getTransaction().commit();
+
+ s.beginTransaction();
+ for ( int i = 0; i < count; i++ ) {
+ assertEquals( i + 1, entities[i].getId().intValue() );
+ s.delete( entities[i] );
+ }
+ s.getTransaction().commit();
+ s.close();
+
+ }
+}
Deleted: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicTableTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicTableTest.java 2007-03-21 02:23:17 UTC (rev 11324)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/BasicTableTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -1,57 +0,0 @@
-package org.hibernate.test.idgen.enhanced.forcedtable;
-
-import junit.framework.Test;
-
-import org.hibernate.junit.functional.DatabaseSpecificFunctionalTestCase;
-import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
-import org.hibernate.persister.entity.EntityPersister;
-import org.hibernate.id.enhanced.SequenceStyleGenerator;
-import org.hibernate.Session;
-
-/**
- * {@inheritDoc}
- *
- * @author Steve Ebersole
- */
-public class BasicTableTest extends DatabaseSpecificFunctionalTestCase {
- public BasicTableTest(String string) {
- super( string );
- }
-
- public String[] getMappings() {
- return new String[] { "idgen/enhanced/forcedtable/Basic.hbm.xml" };
- }
-
- public static Test suite() {
- return new FunctionalTestClassTestSuite( BasicTableTest.class );
- }
-
- public void testNormalBoundary() {
- EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
- assertClassAssignability( SequenceStyleGenerator.class, persister.getIdentifierGenerator().getClass() );
- SequenceStyleGenerator generator = ( SequenceStyleGenerator ) persister.getIdentifierGenerator();
-
- int count = 5;
- Entity[] entities = new Entity[count];
- Session s = openSession();
- s.beginTransaction();
- for ( int i = 0; i < count; i++ ) {
- entities[i] = new Entity( "" + ( i + 1 ) );
- s.save( entities[i] );
- long expectedId = i + 1;
- assertEquals( expectedId, entities[i].getId().longValue() );
- assertEquals( expectedId, generator.getDatabaseStructure().getTimesAccessed() );
- assertEquals( expectedId, generator.getOptimizer().getLastSourceValue() );
- }
- s.getTransaction().commit();
-
- s.beginTransaction();
- for ( int i = 0; i < count; i++ ) {
- assertEquals( i + 1, entities[i].getId().intValue() );
- s.delete( entities[i] );
- }
- s.getTransaction().commit();
- s.close();
-
- }
-}
Copied: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoForcedTableSequenceTest.java (from rev 11324, trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoTableTest.java)
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoForcedTableSequenceTest.java (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoForcedTableSequenceTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,69 @@
+package org.hibernate.test.idgen.enhanced.forcedtable;
+
+import junit.framework.Test;
+
+import org.hibernate.junit.functional.DatabaseSpecificFunctionalTestCase;
+import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
+import org.hibernate.persister.entity.EntityPersister;
+import org.hibernate.id.enhanced.OptimizerFactory;
+import org.hibernate.id.enhanced.SequenceStyleGenerator;
+import org.hibernate.Session;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Steve Ebersole
+ */
+public class HiLoForcedTableSequenceTest extends DatabaseSpecificFunctionalTestCase {
+ public HiLoForcedTableSequenceTest(String string) {
+ super( string );
+ }
+
+ public String[] getMappings() {
+ return new String[] { "idgen/enhanced/forcedtable/HiLo.hbm.xml" };
+ }
+
+ public static Test suite() {
+ return new FunctionalTestClassTestSuite( HiLoForcedTableSequenceTest.class );
+ }
+
+ public void testNormalBoundary() {
+ EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
+ assertClassAssignability( SequenceStyleGenerator.class, persister.getIdentifierGenerator().getClass() );
+ SequenceStyleGenerator generator = ( SequenceStyleGenerator ) persister.getIdentifierGenerator();
+ assertClassAssignability( OptimizerFactory.HiLoOptimizer.class, generator.getOptimizer().getClass() );
+ OptimizerFactory.HiLoOptimizer optimizer = ( OptimizerFactory.HiLoOptimizer ) generator.getOptimizer();
+
+ int increment = optimizer.getIncrementSize();
+ Entity[] entities = new Entity[ increment + 1 ];
+ Session s = openSession();
+ s.beginTransaction();
+ for ( int i = 0; i < increment; i++ ) {
+ entities[i] = new Entity( "" + ( i + 1 ) );
+ s.save( entities[i] );
+ long expectedId = i + 1;
+ assertEquals( expectedId, entities[i].getId().longValue() );
+ assertEquals( 1, generator.getOptimizer().getLastSourceValue() );
+ assertEquals( i + 1, optimizer.getLastValue() );
+ assertEquals( increment + 1, optimizer.getHiValue() );
+ }
+ // now force a "clock over"
+ entities[ increment ] = new Entity( "" + increment );
+ s.save( entities[ increment ] );
+ long expectedId = optimizer.getIncrementSize() + 1;
+ assertEquals( expectedId, entities[ optimizer.getIncrementSize() ].getId().longValue() );
+ assertEquals( 2, optimizer.getLastSourceValue() ); // initialization + clokc-over
+ assertEquals( increment + 1, optimizer.getLastValue() );
+ assertEquals( ( increment * 2 ) + 1, optimizer.getHiValue() );
+
+ s.getTransaction().commit();
+
+ s.beginTransaction();
+ for ( int i = 0; i < entities.length; i++ ) {
+ assertEquals( i + 1, entities[i].getId().intValue() );
+ s.delete( entities[i] );
+ }
+ s.getTransaction().commit();
+ s.close();
+ }
+}
Deleted: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoTableTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoTableTest.java 2007-03-21 02:23:17 UTC (rev 11324)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/HiLoTableTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -1,69 +0,0 @@
-package org.hibernate.test.idgen.enhanced.forcedtable;
-
-import junit.framework.Test;
-
-import org.hibernate.junit.functional.DatabaseSpecificFunctionalTestCase;
-import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
-import org.hibernate.persister.entity.EntityPersister;
-import org.hibernate.id.enhanced.OptimizerFactory;
-import org.hibernate.id.enhanced.SequenceStyleGenerator;
-import org.hibernate.Session;
-
-/**
- * {@inheritDoc}
- *
- * @author Steve Ebersole
- */
-public class HiLoTableTest extends DatabaseSpecificFunctionalTestCase {
- public HiLoTableTest(String string) {
- super( string );
- }
-
- public String[] getMappings() {
- return new String[] { "idgen/enhanced/forcedtable/HiLo.hbm.xml" };
- }
-
- public static Test suite() {
- return new FunctionalTestClassTestSuite( HiLoTableTest.class );
- }
-
- public void testNormalBoundary() {
- EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
- assertClassAssignability( SequenceStyleGenerator.class, persister.getIdentifierGenerator().getClass() );
- SequenceStyleGenerator generator = ( SequenceStyleGenerator ) persister.getIdentifierGenerator();
- assertClassAssignability( OptimizerFactory.HiLoOptimizer.class, generator.getOptimizer().getClass() );
- OptimizerFactory.HiLoOptimizer optimizer = ( OptimizerFactory.HiLoOptimizer ) generator.getOptimizer();
-
- int increment = optimizer.getIncrementSize();
- Entity[] entities = new Entity[ increment + 1 ];
- Session s = openSession();
- s.beginTransaction();
- for ( int i = 0; i < increment; i++ ) {
- entities[i] = new Entity( "" + ( i + 1 ) );
- s.save( entities[i] );
- long expectedId = i + 1;
- assertEquals( expectedId, entities[i].getId().longValue() );
- assertEquals( 1, generator.getOptimizer().getLastSourceValue() );
- assertEquals( i + 1, optimizer.getLastValue() );
- assertEquals( increment + 1, optimizer.getHiValue() );
- }
- // now force a "clock over"
- entities[ increment ] = new Entity( "" + increment );
- s.save( entities[ increment ] );
- long expectedId = optimizer.getIncrementSize() + 1;
- assertEquals( expectedId, entities[ optimizer.getIncrementSize() ].getId().longValue() );
- assertEquals( 2, optimizer.getLastSourceValue() ); // initialization + clokc-over
- assertEquals( increment + 1, optimizer.getLastValue() );
- assertEquals( ( increment * 2 ) + 1, optimizer.getHiValue() );
-
- s.getTransaction().commit();
-
- s.beginTransaction();
- for ( int i = 0; i < entities.length; i++ ) {
- assertEquals( i + 1, entities[i].getId().intValue() );
- s.delete( entities[i] );
- }
- s.getTransaction().commit();
- s.close();
- }
-}
Copied: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledForcedTableSequenceTest.java (from rev 11324, trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledTableTest.java)
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledForcedTableSequenceTest.java (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledForcedTableSequenceTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,69 @@
+package org.hibernate.test.idgen.enhanced.forcedtable;
+
+import junit.framework.Test;
+
+import org.hibernate.junit.functional.DatabaseSpecificFunctionalTestCase;
+import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
+import org.hibernate.persister.entity.EntityPersister;
+import org.hibernate.id.enhanced.OptimizerFactory;
+import org.hibernate.id.enhanced.SequenceStyleGenerator;
+import org.hibernate.Session;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Steve Ebersole
+ */
+public class PooledForcedTableSequenceTest extends DatabaseSpecificFunctionalTestCase {
+ public PooledForcedTableSequenceTest(String string) {
+ super( string );
+ }
+
+ public String[] getMappings() {
+ return new String[] { "idgen/enhanced/forcedtable/Pooled.hbm.xml" };
+ }
+
+ public static Test suite() {
+ return new FunctionalTestClassTestSuite( PooledForcedTableSequenceTest.class );
+ }
+
+ public void testNormalBoundary() {
+ EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
+ assertClassAssignability( SequenceStyleGenerator.class, persister.getIdentifierGenerator().getClass() );
+ SequenceStyleGenerator generator = ( SequenceStyleGenerator ) persister.getIdentifierGenerator();
+ assertClassAssignability( OptimizerFactory.PooledOptimizer.class, generator.getOptimizer().getClass() );
+ OptimizerFactory.PooledOptimizer optimizer = ( OptimizerFactory.PooledOptimizer ) generator.getOptimizer();
+
+ int increment = optimizer.getIncrementSize();
+ Entity[] entities = new Entity[ increment + 1 ];
+ Session s = openSession();
+ s.beginTransaction();
+ for ( int i = 0; i < increment; i++ ) {
+ entities[i] = new Entity( "" + ( i + 1 ) );
+ s.save( entities[i] );
+ long expectedId = i + 1;
+ assertEquals( expectedId, entities[i].getId().longValue() );
+ assertEquals( 2, generator.getDatabaseStructure().getTimesAccessed() ); // initialization calls table twice
+ assertEquals( increment + 1, optimizer.getLastSourceValue() ); // initialization calls table twice
+ assertEquals( i + 1, optimizer.getLastValue() );
+ assertEquals( increment + 1, optimizer.getLastSourceValue() );
+ }
+ // now force a "clock over"
+ entities[ increment ] = new Entity( "" + increment );
+ s.save( entities[ increment ] );
+ long expectedId = optimizer.getIncrementSize() + 1;
+ assertEquals( expectedId, entities[ optimizer.getIncrementSize() ].getId().longValue() );
+ assertEquals( 3, generator.getDatabaseStructure().getTimesAccessed() ); // initialization (2) + clock over
+ assertEquals( ( increment * 2 ) + 1, optimizer.getLastSourceValue() ); // initialization (2) + clock over
+ assertEquals( increment + 1, optimizer.getLastValue() );
+ s.getTransaction().commit();
+
+ s.beginTransaction();
+ for ( int i = 0; i < entities.length; i++ ) {
+ assertEquals( i + 1, entities[i].getId().intValue() );
+ s.delete( entities[i] );
+ }
+ s.getTransaction().commit();
+ s.close();
+ }
+}
Deleted: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledTableTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledTableTest.java 2007-03-21 02:23:17 UTC (rev 11324)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/forcedtable/PooledTableTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -1,69 +0,0 @@
-package org.hibernate.test.idgen.enhanced.forcedtable;
-
-import junit.framework.Test;
-
-import org.hibernate.junit.functional.DatabaseSpecificFunctionalTestCase;
-import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
-import org.hibernate.persister.entity.EntityPersister;
-import org.hibernate.id.enhanced.OptimizerFactory;
-import org.hibernate.id.enhanced.SequenceStyleGenerator;
-import org.hibernate.Session;
-
-/**
- * {@inheritDoc}
- *
- * @author Steve Ebersole
- */
-public class PooledTableTest extends DatabaseSpecificFunctionalTestCase {
- public PooledTableTest(String string) {
- super( string );
- }
-
- public String[] getMappings() {
- return new String[] { "idgen/enhanced/forcedtable/Pooled.hbm.xml" };
- }
-
- public static Test suite() {
- return new FunctionalTestClassTestSuite( PooledTableTest.class );
- }
-
- public void testNormalBoundary() {
- EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
- assertClassAssignability( SequenceStyleGenerator.class, persister.getIdentifierGenerator().getClass() );
- SequenceStyleGenerator generator = ( SequenceStyleGenerator ) persister.getIdentifierGenerator();
- assertClassAssignability( OptimizerFactory.PooledOptimizer.class, generator.getOptimizer().getClass() );
- OptimizerFactory.PooledOptimizer optimizer = ( OptimizerFactory.PooledOptimizer ) generator.getOptimizer();
-
- int increment = optimizer.getIncrementSize();
- Entity[] entities = new Entity[ increment + 1 ];
- Session s = openSession();
- s.beginTransaction();
- for ( int i = 0; i < increment; i++ ) {
- entities[i] = new Entity( "" + ( i + 1 ) );
- s.save( entities[i] );
- long expectedId = i + 1;
- assertEquals( expectedId, entities[i].getId().longValue() );
- assertEquals( 2, generator.getDatabaseStructure().getTimesAccessed() ); // initialization calls table twice
- assertEquals( increment + 1, optimizer.getLastSourceValue() ); // initialization calls table twice
- assertEquals( i + 1, optimizer.getLastValue() );
- assertEquals( increment + 1, optimizer.getLastSourceValue() );
- }
- // now force a "clock over"
- entities[ increment ] = new Entity( "" + increment );
- s.save( entities[ increment ] );
- long expectedId = optimizer.getIncrementSize() + 1;
- assertEquals( expectedId, entities[ optimizer.getIncrementSize() ].getId().longValue() );
- assertEquals( 3, generator.getDatabaseStructure().getTimesAccessed() ); // initialization (2) + clock over
- assertEquals( ( increment * 2 ) + 1, optimizer.getLastSourceValue() ); // initialization (2) + clock over
- assertEquals( increment + 1, optimizer.getLastValue() );
- s.getTransaction().commit();
-
- s.beginTransaction();
- for ( int i = 0; i < entities.length; i++ ) {
- assertEquals( i + 1, entities[i].getId().intValue() );
- s.delete( entities[i] );
- }
- s.getTransaction().commit();
- s.close();
- }
-}
Added: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Basic.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Basic.hbm.xml (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Basic.hbm.xml 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.hibernate.test.idgen.enhanced.table">
+
+ <class name="Entity" table="ID_TBL_BSC_ENTITY">
+ <id name="id" column="ID" type="long">
+ <generator class="org.hibernate.id.enhanced.TableGenerator">
+ <param name="table_name">ID_TBL_BSC_TBL</param>
+ <param name="segment_value">test</param>
+ <param name="initial_value">1</param>
+ <param name="increment_size">1</param>
+ <param name="optimizer">none</param>
+ </generator>
+ </id>
+ <property name="name" type="string"/>
+ </class>
+
+</hibernate-mapping>
Added: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/BasicTableTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/BasicTableTest.java (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/BasicTableTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,57 @@
+package org.hibernate.test.idgen.enhanced.table;
+
+import junit.framework.Test;
+
+import org.hibernate.junit.functional.FunctionalTestCase;
+import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
+import org.hibernate.persister.entity.EntityPersister;
+import org.hibernate.id.enhanced.TableGenerator;
+import org.hibernate.Session;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Steve Ebersole
+ */
+public class BasicTableTest extends FunctionalTestCase {
+ public BasicTableTest(String string) {
+ super( string );
+ }
+
+ public String[] getMappings() {
+ return new String[] { "idgen/enhanced/table/Basic.hbm.xml" };
+ }
+
+ public static Test suite() {
+ return new FunctionalTestClassTestSuite( BasicTableTest.class );
+ }
+
+ public void testNormalBoundary() {
+ EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
+ assertClassAssignability( TableGenerator.class, persister.getIdentifierGenerator().getClass() );
+ TableGenerator generator = ( TableGenerator ) persister.getIdentifierGenerator();
+
+ int count = 5;
+ Entity[] entities = new Entity[count];
+ Session s = openSession();
+ s.beginTransaction();
+ for ( int i = 0; i < count; i++ ) {
+ entities[i] = new Entity( "" + ( i + 1 ) );
+ s.save( entities[i] );
+ long expectedId = i + 1;
+ assertEquals( expectedId, entities[i].getId().longValue() );
+ assertEquals( expectedId, generator.getTableAccessCount() );
+ assertEquals( expectedId, generator.getOptimizer().getLastSourceValue() );
+ }
+ s.getTransaction().commit();
+
+ s.beginTransaction();
+ for ( int i = 0; i < count; i++ ) {
+ assertEquals( i + 1, entities[i].getId().intValue() );
+ s.delete( entities[i] );
+ }
+ s.getTransaction().commit();
+ s.close();
+
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Entity.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Entity.java (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Entity.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,34 @@
+package org.hibernate.test.idgen.enhanced.table;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Steve Ebersole
+ */
+public class Entity {
+ private Long id;
+ private String name;
+
+ public Entity() {
+ }
+
+ public Entity(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;
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/HiLo.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/HiLo.hbm.xml (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/HiLo.hbm.xml 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.hibernate.test.idgen.enhanced.table">
+
+ <class name="Entity" table="ID_TBL_HILO_ENTITY">
+ <id name="id" column="ID" type="long">
+ <generator class="org.hibernate.id.enhanced.TableGenerator">
+ <param name="table_name">ID_TBL_HILO_TBL</param>
+ <param name="segment_value">test</param>
+ <param name="initial_value">1</param>
+ <param name="increment_size">10</param>
+ <param name="optimizer">hilo</param>
+ </generator>
+ </id>
+ <property name="name" type="string"/>
+ </class>
+
+</hibernate-mapping>
Added: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/HiLoTableTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/HiLoTableTest.java (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/HiLoTableTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,67 @@
+package org.hibernate.test.idgen.enhanced.table;
+
+import junit.framework.Test;
+
+import org.hibernate.junit.functional.FunctionalTestCase;
+import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
+import org.hibernate.persister.entity.EntityPersister;
+import org.hibernate.id.enhanced.OptimizerFactory;
+import org.hibernate.id.enhanced.TableGenerator;
+import org.hibernate.Session;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Steve Ebersole
+ */
+public class HiLoTableTest extends FunctionalTestCase {
+ public HiLoTableTest(String string) {
+ super( string );
+ }
+
+ public String[] getMappings() {
+ return new String[] { "idgen/enhanced/table/HiLo.hbm.xml" };
+ }
+
+ public static Test suite() {
+ return new FunctionalTestClassTestSuite( HiLoTableTest.class );
+ }
+
+ public void testNormalBoundary() {
+ EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
+ assertClassAssignability( TableGenerator.class, persister.getIdentifierGenerator().getClass() );
+ TableGenerator generator = ( TableGenerator ) persister.getIdentifierGenerator();
+ assertClassAssignability( OptimizerFactory.HiLoOptimizer.class, generator.getOptimizer().getClass() );
+ OptimizerFactory.HiLoOptimizer optimizer = ( OptimizerFactory.HiLoOptimizer ) generator.getOptimizer();
+
+ int increment = optimizer.getIncrementSize();
+ Entity[] entities = new Entity[ increment + 1 ];
+ Session s = openSession();
+ s.beginTransaction();
+ for ( int i = 0; i < increment; i++ ) {
+ entities[i] = new Entity( "" + ( i + 1 ) );
+ s.save( entities[i] );
+ assertEquals( 1, generator.getTableAccessCount() ); // initialization
+ assertEquals( 1, optimizer.getLastSourceValue() ); // initialization
+ assertEquals( i + 1, optimizer.getLastValue() );
+ assertEquals( increment + 1, optimizer.getHiValue() );
+ }
+ // now force a "clock over"
+ entities[ increment ] = new Entity( "" + increment );
+ s.save( entities[ increment ] );
+ assertEquals( 2, generator.getTableAccessCount() ); // initialization
+ assertEquals( 2, optimizer.getLastSourceValue() ); // initialization
+ assertEquals( increment + 1, optimizer.getLastValue() );
+ assertEquals( ( increment * 2 ) + 1, optimizer.getHiValue() );
+
+ s.getTransaction().commit();
+
+ s.beginTransaction();
+ for ( int i = 0; i < entities.length; i++ ) {
+ assertEquals( i + 1, entities[i].getId().intValue() );
+ s.delete( entities[i] );
+ }
+ s.getTransaction().commit();
+ s.close();
+ }
+}
Added: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Pooled.hbm.xml
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Pooled.hbm.xml (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/Pooled.hbm.xml 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<!--
+ Demonstrates use of the enhanced sequence-based identifier
+ generator, using a pooled algorithm as the optimization (to
+ avoid hitting the database to generate each value).
+-->
+
+<hibernate-mapping package="org.hibernate.test.idgen.enhanced.table">
+
+ <class name="Entity" table="ID_TBL_POOL_ENTITY">
+ <id name="id" column="ID" type="long">
+ <generator class="org.hibernate.id.enhanced.TableGenerator">
+ <param name="table_name">ID_TBL_POOL_TBL</param>
+ <param name="segment_value">test</param>
+ <param name="initial_value">1</param>
+ <param name="increment_size">10</param>
+ <param name="optimizer">pooled</param>
+ </generator>
+ </id>
+ <property name="name" type="string"/>
+ </class>
+
+</hibernate-mapping>
Added: trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/PooledTableTest.java
===================================================================
--- trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/PooledTableTest.java (rev 0)
+++ trunk/Hibernate3/test/org/hibernate/test/idgen/enhanced/table/PooledTableTest.java 2007-03-21 02:54:23 UTC (rev 11325)
@@ -0,0 +1,65 @@
+package org.hibernate.test.idgen.enhanced.table;
+
+import junit.framework.Test;
+
+import org.hibernate.junit.functional.FunctionalTestCase;
+import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
+import org.hibernate.persister.entity.EntityPersister;
+import org.hibernate.id.enhanced.OptimizerFactory;
+import org.hibernate.id.enhanced.TableGenerator;
+import org.hibernate.Session;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Steve Ebersole
+ */
+public class PooledTableTest extends FunctionalTestCase {
+ public PooledTableTest(String string) {
+ super( string );
+ }
+
+ public String[] getMappings() {
+ return new String[] { "idgen/enhanced/table/Pooled.hbm.xml" };
+ }
+
+ public static Test suite() {
+ return new FunctionalTestClassTestSuite( PooledTableTest.class );
+ }
+
+ public void testNormalBoundary() {
+ EntityPersister persister = sfi().getEntityPersister( Entity.class.getName() );
+ assertClassAssignability( TableGenerator.class, persister.getIdentifierGenerator().getClass() );
+ TableGenerator generator = ( TableGenerator ) persister.getIdentifierGenerator();
+ assertClassAssignability( OptimizerFactory.PooledOptimizer.class, generator.getOptimizer().getClass() );
+ OptimizerFactory.PooledOptimizer optimizer = ( OptimizerFactory.PooledOptimizer ) generator.getOptimizer();
+
+ int increment = optimizer.getIncrementSize();
+ Entity[] entities = new Entity[ increment + 1 ];
+ Session s = openSession();
+ s.beginTransaction();
+ for ( int i = 0; i < increment; i++ ) {
+ entities[i] = new Entity( "" + ( i + 1 ) );
+ s.save( entities[i] );
+ assertEquals( 2, generator.getTableAccessCount() ); // initialization calls seq twice
+ assertEquals( increment + 1, optimizer.getLastSourceValue() ); // initialization calls seq twice
+ assertEquals( i + 1, optimizer.getLastValue() );
+ assertEquals( increment + 1, optimizer.getLastSourceValue() );
+ }
+ // now force a "clock over"
+ entities[ increment ] = new Entity( "" + increment );
+ s.save( entities[ increment ] );
+ assertEquals( 3, generator.getTableAccessCount() ); // initialization (2) + clock over
+ assertEquals( ( increment * 2 ) + 1, optimizer.getLastSourceValue() ); // initialization (2) + clock over
+ assertEquals( increment + 1, optimizer.getLastValue() );
+ s.getTransaction().commit();
+
+ s.beginTransaction();
+ for ( int i = 0; i < entities.length; i++ ) {
+ assertEquals( i + 1, entities[i].getId().intValue() );
+ s.delete( entities[i] );
+ }
+ s.getTransaction().commit();
+ s.close();
+ }
+}
More information about the hibernate-commits
mailing list