Saturday, March 14, 2009

Hibernate key generator per model

Hibernate is designed to create a key generator instance for each model or each inheritance class tree. The logic is in the SessionFactoryImpl class:


while ( classes.hasNext() ) {
PersistentClass model = (PersistentClass) classes.next();
if ( !model.isInherited() ) {
IdentifierGenerator generator = model.getIdentifier().createIdentifierGenerator(settings.getDialect(),
settings.getDefaultCatalogName(), settings.getDefaultSchemaName(),
(RootClass) model);
identifierGenerators.put( model.getEntityName(), generator );
}
}


This is quite flexible and customizable. Each table can configure a different sequence High Low key generator.

No comments:

Post a Comment