Search in sources :

Example 1 with HiLoOptimizer

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();
}
Also used : EntityPersister(org.hibernate.persister.entity.EntityPersister) HiLoOptimizer(org.hibernate.id.enhanced.HiLoOptimizer) TableGenerator(org.hibernate.id.enhanced.TableGenerator) Session(org.hibernate.Session) Test(org.junit.Test)

Example 2 with HiLoOptimizer

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();
}
Also used : EntityPersister(org.hibernate.persister.entity.EntityPersister) TableStructure(org.hibernate.id.enhanced.TableStructure) HiLoOptimizer(org.hibernate.id.enhanced.HiLoOptimizer) SequenceStyleGenerator(org.hibernate.id.enhanced.SequenceStyleGenerator) Session(org.hibernate.Session) Test(org.junit.Test)

Example 3 with HiLoOptimizer

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();
}
Also used : EntityPersister(org.hibernate.persister.entity.EntityPersister) HiLoOptimizer(org.hibernate.id.enhanced.HiLoOptimizer) SequenceStyleGenerator(org.hibernate.id.enhanced.SequenceStyleGenerator) Session(org.hibernate.Session) Test(org.junit.Test)

Aggregations

Session (org.hibernate.Session)3 HiLoOptimizer (org.hibernate.id.enhanced.HiLoOptimizer)3 EntityPersister (org.hibernate.persister.entity.EntityPersister)3 Test (org.junit.Test)3 SequenceStyleGenerator (org.hibernate.id.enhanced.SequenceStyleGenerator)2 TableGenerator (org.hibernate.id.enhanced.TableGenerator)1 TableStructure (org.hibernate.id.enhanced.TableStructure)1