Search in sources :

Example 1 with SequenceStyleGenerator

use of org.hibernate.id.enhanced.SequenceStyleGenerator in project hibernate-orm by hibernate.

the class SequenceHiLoGeneratorNoIncrementTest method setUp.

@Before
public void setUp() throws Exception {
    serviceRegistry = new StandardServiceRegistryBuilder().enableAutoClose().applySetting(AvailableSettings.HBM2DDL_AUTO, "create-drop").build();
    generator = new SequenceStyleGenerator();
    // Build the properties used to configure the id generator
    Properties properties = new Properties();
    properties.setProperty(SequenceStyleGenerator.SEQUENCE_PARAM, TEST_SEQUENCE);
    properties.setProperty(SequenceStyleGenerator.OPT_PARAM, "legacy-hilo");
    // JPA allocationSize of 1
    properties.setProperty(SequenceStyleGenerator.INCREMENT_PARAM, "0");
    properties.put(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER, new ObjectNameNormalizer() {

        @Override
        protected MetadataBuildingContext getBuildingContext() {
            return new MetadataBuildingContextTestingImpl(serviceRegistry);
        }
    });
    generator.configure(StandardBasicTypes.LONG, properties, serviceRegistry);
    final Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
    generator.registerExportables(metadata.getDatabase());
    sessionFactory = (SessionFactoryImplementor) metadata.buildSessionFactory();
    sequenceValueExtractor = new SequenceValueExtractor(sessionFactory.getDialect(), TEST_SEQUENCE);
}
Also used : MetadataBuildingContextTestingImpl(org.hibernate.testing.boot.MetadataBuildingContextTestingImpl) StandardServiceRegistryBuilder(org.hibernate.boot.registry.StandardServiceRegistryBuilder) Metadata(org.hibernate.boot.Metadata) MetadataSources(org.hibernate.boot.MetadataSources) MetadataBuildingContext(org.hibernate.boot.spi.MetadataBuildingContext) ObjectNameNormalizer(org.hibernate.boot.model.naming.ObjectNameNormalizer) SequenceStyleGenerator(org.hibernate.id.enhanced.SequenceStyleGenerator) Properties(java.util.Properties) Before(org.junit.Before)

Example 2 with SequenceStyleGenerator

use of org.hibernate.id.enhanced.SequenceStyleGenerator in project hibernate-orm by hibernate.

the class NewGeneratorMappingsTest method testCompleteSequenceEntity.

@Test
public void testCompleteSequenceEntity() {
    final EntityPersister persister = sessionFactory().getEntityPersister(CompleteSequenceEntity.class.getName());
    IdentifierGenerator generator = persister.getIdentifierGenerator();
    assertTrue(SequenceStyleGenerator.class.isInstance(generator));
    SequenceStyleGenerator seqGenerator = (SequenceStyleGenerator) generator;
    assertEquals(1000, seqGenerator.getDatabaseStructure().getInitialValue());
    assertEquals(52, seqGenerator.getDatabaseStructure().getIncrementSize());
    assertFalse(NoopOptimizer.class.isInstance(seqGenerator.getOptimizer()));
}
Also used : EntityPersister(org.hibernate.persister.entity.EntityPersister) NoopOptimizer(org.hibernate.id.enhanced.NoopOptimizer) SequenceStyleGenerator(org.hibernate.id.enhanced.SequenceStyleGenerator) IdentifierGenerator(org.hibernate.id.IdentifierGenerator) Test(org.junit.Test)

Example 3 with SequenceStyleGenerator

use of org.hibernate.id.enhanced.SequenceStyleGenerator in project hibernate-orm by hibernate.

the class HibernateSequenceTest method testHibernateSequenceSchema.

@Test
public void testHibernateSequenceSchema() {
    EntityPersister persister = sessionFactory().getEntityPersister(HibernateSequenceEntity.class.getName());
    IdentifierGenerator generator = persister.getIdentifierGenerator();
    Assert.assertTrue(SequenceStyleGenerator.class.isInstance(generator));
    SequenceStyleGenerator seqGenerator = (SequenceStyleGenerator) generator;
    Assert.assertEquals(Table.qualify(null, SCHEMA_NAME, SequenceStyleGenerator.DEF_SEQUENCE_NAME), seqGenerator.getDatabaseStructure().getName());
}
Also used : EntityPersister(org.hibernate.persister.entity.EntityPersister) HibernateSequenceEntity(org.hibernate.test.annotations.id.sequences.entities.HibernateSequenceEntity) SequenceStyleGenerator(org.hibernate.id.enhanced.SequenceStyleGenerator) IdentifierGenerator(org.hibernate.id.IdentifierGenerator) Test(org.junit.Test)

Example 4 with SequenceStyleGenerator

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

Example 5 with SequenceStyleGenerator

use of org.hibernate.id.enhanced.SequenceStyleGenerator 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)

Aggregations

SequenceStyleGenerator (org.hibernate.id.enhanced.SequenceStyleGenerator)20 Test (org.junit.Test)18 EntityPersister (org.hibernate.persister.entity.EntityPersister)12 IdentifierGenerator (org.hibernate.id.IdentifierGenerator)10 Session (org.hibernate.Session)7 Metadata (org.hibernate.boot.Metadata)6 MetadataSources (org.hibernate.boot.MetadataSources)6 StandardServiceRegistryBuilder (org.hibernate.boot.registry.StandardServiceRegistryBuilder)6 StandardServiceRegistry (org.hibernate.boot.registry.StandardServiceRegistry)5 PersistentClass (org.hibernate.mapping.PersistentClass)5 NoopOptimizer (org.hibernate.id.enhanced.NoopOptimizer)3 TableStructure (org.hibernate.id.enhanced.TableStructure)3 Properties (java.util.Properties)2 HiLoOptimizer (org.hibernate.id.enhanced.HiLoOptimizer)2 PooledOptimizer (org.hibernate.id.enhanced.PooledOptimizer)2 TestForIssue (org.hibernate.testing.TestForIssue)2 ATest (de.invesdwin.context.test.ATest)1 ObjectNameNormalizer (org.hibernate.boot.model.naming.ObjectNameNormalizer)1 Sequence (org.hibernate.boot.model.relational.Sequence)1 MetadataBuildingContext (org.hibernate.boot.spi.MetadataBuildingContext)1