use of org.hibernate.id.enhanced.PooledOptimizer in project hibernate-orm by hibernate.
the class PooledSequenceTest method testNormalBoundary.
@Test
public void testNormalBoundary() {
EntityPersister persister = sessionFactory().getEntityPersister(Entity.class.getName());
assertClassAssignability(SequenceStyleGenerator.class, persister.getIdentifierGenerator().getClass());
SequenceStyleGenerator generator = (SequenceStyleGenerator) persister.getIdentifierGenerator();
assertClassAssignability(PooledOptimizer.class, generator.getOptimizer().getClass());
PooledOptimizer optimizer = (PooledOptimizer) generator.getOptimizer();
int increment = optimizer.getIncrementSize();
Entity[] entities = new Entity[increment + 2];
Session s = openSession();
s.beginTransaction();
for (int i = 0; i <= increment; i++) {
entities[i] = new Entity("" + (i + 1));
s.save(entities[i]);
// initialization calls seq twice
assertEquals(2, generator.getDatabaseStructure().getTimesAccessed());
// initialization calls seq twice
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(i + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
}
// now force a "clock over"
entities[increment + 1] = new Entity("" + increment);
s.save(entities[increment + 1]);
// initialization (2) + clock over
assertEquals(3, generator.getDatabaseStructure().getTimesAccessed());
// initialization (2) + clock over
assertEquals((increment * 2) + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(increment + 2, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
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();
}
use of org.hibernate.id.enhanced.PooledOptimizer in project hibernate-orm by hibernate.
the class PooledForcedTableSequenceTest method testNormalBoundary.
@Test
public void testNormalBoundary() {
EntityPersister persister = sessionFactory().getEntityPersister(Entity.class.getName());
assertTrue("sequence style generator was not used", SequenceStyleGenerator.class.isInstance(persister.getIdentifierGenerator()));
SequenceStyleGenerator generator = (SequenceStyleGenerator) persister.getIdentifierGenerator();
assertTrue("table structure was not used", TableStructure.class.isInstance(generator.getDatabaseStructure()));
assertTrue("pooled optimizer was not used", PooledOptimizer.class.isInstance(generator.getOptimizer()));
PooledOptimizer optimizer = (PooledOptimizer) generator.getOptimizer();
int increment = optimizer.getIncrementSize();
Entity[] entities = new Entity[increment + 2];
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());
// NOTE : initialization calls table twice
assertEquals(2, generator.getDatabaseStructure().getTimesAccessed());
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(i + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
}
// now force a "clock over"
entities[increment + 1] = new Entity("" + increment);
s.save(entities[increment + 1]);
long expectedId = optimizer.getIncrementSize() + 2;
assertEquals(expectedId, entities[increment + 1].getId().longValue());
// initialization (2) + clock over
assertEquals(3, generator.getDatabaseStructure().getTimesAccessed());
assertEquals((increment * 2) + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(increment + 2, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
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();
}
use of org.hibernate.id.enhanced.PooledOptimizer in project hibernate-orm by hibernate.
the class PooledTableTest method testNormalBoundary.
@Test
public void testNormalBoundary() {
EntityPersister persister = sessionFactory().getEntityPersister(Entity.class.getName());
assertClassAssignability(TableGenerator.class, persister.getIdentifierGenerator().getClass());
TableGenerator generator = (TableGenerator) persister.getIdentifierGenerator();
assertClassAssignability(PooledOptimizer.class, generator.getOptimizer().getClass());
PooledOptimizer optimizer = (PooledOptimizer) generator.getOptimizer();
int increment = optimizer.getIncrementSize();
Entity[] entities = new Entity[increment + 2];
Session s = openSession();
s.beginTransaction();
for (int i = 0; i <= increment; i++) {
entities[i] = new Entity("" + (i + 1));
s.save(entities[i]);
// initialization calls seq twice
assertEquals(2, generator.getTableAccessCount());
// initialization calls seq twice
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(i + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
}
// now force a "clock over"
entities[increment + 1] = new Entity("" + increment);
s.save(entities[increment + 1]);
// initialization (2) + clock over
assertEquals(3, generator.getTableAccessCount());
// initialization (2) + clock over
assertEquals((increment * 2) + 1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(increment + 2, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
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();
}
Aggregations