use of org.hibernate.id.enhanced.HiLoOptimizer in project hibernate-orm by hibernate.
the class HiLoTableTest 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(HiLoOptimizer.class, generator.getOptimizer().getClass());
HiLoOptimizer optimizer = (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]);
// initialization
assertEquals(1, generator.getTableAccessCount());
// initialization
assertEquals(1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(i + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getHiValue()).getActualLongValue());
}
// now force a "clock over"
entities[increment] = new Entity("" + increment);
s.save(entities[increment]);
// initialization
assertEquals(2, generator.getTableAccessCount());
// initialization
assertEquals(2, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals((increment * 2) + 1, ((BasicHolder) optimizer.getHiValue()).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.HiLoOptimizer in project hibernate-orm by hibernate.
the class HiLoForcedTableSequenceTest 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("hilo optimizer was not used", HiLoOptimizer.class.isInstance(generator.getOptimizer()));
HiLoOptimizer optimizer = (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, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(i + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getHiValue()).getActualLongValue());
}
// 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());
// initialization + clock-over
assertEquals(2, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals((increment * 2) + 1, ((BasicHolder) optimizer.getHiValue()).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.HiLoOptimizer in project hibernate-orm by hibernate.
the class HiLoSequenceTest 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(HiLoOptimizer.class, generator.getOptimizer().getClass());
HiLoOptimizer optimizer = (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]);
// initialization
assertEquals(1, generator.getDatabaseStructure().getTimesAccessed());
// initialization
assertEquals(1, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(i + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getHiValue()).getActualLongValue());
}
// now force a "clock over"
entities[increment] = new Entity("" + increment);
s.save(entities[increment]);
// initialization
assertEquals(2, generator.getDatabaseStructure().getTimesAccessed());
// initialization
assertEquals(2, ((BasicHolder) optimizer.getLastSourceValue()).getActualLongValue());
assertEquals(increment + 1, ((BasicHolder) optimizer.getLastValue()).getActualLongValue());
assertEquals((increment * 2) + 1, ((BasicHolder) optimizer.getHiValue()).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