@Before public void setUp() throws Exception { Properties properties = new Properties(); properties.setProperty(TableGenerator.TABLE, GEN_TABLE); properties.setProperty(TableGenerator.COLUMN, GEN_COLUMN); properties.setProperty(TableHiLoGenerator.MAX_LO, "3"); properties.put( PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER, new ObjectNameNormalizer() { @Override protected boolean isUseQuotedIdentifiersGlobally() { return false; } @Override protected NamingStrategy getNamingStrategy() { return cfg.getNamingStrategy(); } }); Dialect dialect = new H2Dialect(); generator = new TableHiLoGenerator(); generator.configure(StandardBasicTypes.LONG, properties, dialect); cfg = TestingDatabaseInfo.buildBaseConfiguration() .setProperty(Environment.HBM2DDL_AUTO, "create-drop"); cfg.addAuxiliaryDatabaseObject( new SimpleAuxiliaryDatabaseObject( generator.sqlCreateStrings(dialect)[0], generator.sqlDropStrings(dialect)[0])); cfg.addAuxiliaryDatabaseObject( new SimpleAuxiliaryDatabaseObject(generator.sqlCreateStrings(dialect)[1], null)); serviceRegistry = ServiceRegistryBuilder.buildServiceRegistry(cfg.getProperties()); sessionFactory = (SessionFactoryImplementor) cfg.buildSessionFactory(serviceRegistry); }
@Test public void testHiLoAlgorithm() { SessionImpl session = (SessionImpl) sessionFactory.openSession(); session.beginTransaction(); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // initially sequence should be uninitialized assertEquals(0L, extractInDatabaseValue(session)); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Long generatedValue = (Long) generator.generate(session, null); assertEquals(1L, generatedValue.longValue()); assertEquals(1L, extractInDatabaseValue(session)); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ generatedValue = (Long) generator.generate(session, null); assertEquals(2L, generatedValue.longValue()); assertEquals(1L, extractInDatabaseValue(session)); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ generatedValue = (Long) generator.generate(session, null); assertEquals(3L, generatedValue.longValue()); assertEquals(1L, extractInDatabaseValue(session)); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ generatedValue = (Long) generator.generate(session, null); assertEquals(4L, generatedValue.longValue()); assertEquals(2L, extractInDatabaseValue(session)); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ generatedValue = (Long) generator.generate(session, null); assertEquals(5L, generatedValue.longValue()); assertEquals(2L, extractInDatabaseValue(session)); session.getTransaction().commit(); session.close(); }