Desde o 5.0 , agora você pode encontrar esses valores em um dedicado Enum
: org.hibernate.boot.SchemaAutoTooling
(aprimorado com o valor NONE
desde 5.2).
Ou melhor ainda, desde a versão 5.1 , você também pode usar a que combina ações JPA 2 e Hibernate DDL "herdadas".org.hibernate.tool.schema.Action
Enum
Mas você ainda não pode configurar um DataSource
programaticamente com isso. Seria melhor usar isso combinado com, org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTO
mas o código atual espera um String
valor (trecho extraído de SessionFactoryBuilderImpl
):
this.schemaAutoTooling = SchemaAutoTooling.interpret( (String) configurationSettings.get( AvailableSettings.HBM2DDL_AUTO ) );
… E enum
valores internos de ambos org.hibernate.boot.SchemaAutoTooling
e org.hibernate.tool.schema.Action
não são expostos publicamente.
A seguir, uma DataSource
configuração programática de exemplo (usada em um dos meus aplicativos Spring Boot) que usa uma aposta graças a, .name().toLowerCase()
mas só funciona com valores sem traço (não create-drop
por exemplo):
@Bean(name = ENTITY_MANAGER_NAME)
public LocalContainerEntityManagerFactoryBean internalEntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier(DATA_SOURCE_NAME) DataSource internalDataSource) {
Map<String, Object> properties = new HashMap<>();
properties.put(AvailableSettings.HBM2DDL_AUTO, SchemaAutoTooling.CREATE.name().toLowerCase());
properties.put(AvailableSettings.DIALECT, H2Dialect.class.getName());
return builder
.dataSource(internalDataSource)
.packages(JpaModelsScanEntry.class, Jsr310JpaConverters.class)
.persistenceUnit(PERSISTENCE_UNIT_NAME)
.properties(properties)
.build();
}