Desde 5.0 , ahora puede encontrar esos valores en un dedicado Enum
: org.hibernate.boot.SchemaAutoTooling
(mejorado con valorNONE
desde 5.2).
O incluso mejor, desde 5.1 , también puede utilizar el que combina JPA 2 y acciones "heredadas" Hibernate DDL.org.hibernate.tool.schema.Action
Enum
Pero , aún no puede configurar una DataSource
programación mediante esto. Sería mejor usar esto combinado con, org.hibernate.cfg.AvailableSettings#HBM2DDL_AUTO
pero el código actual espera un String
valor (extracto tomado de SessionFactoryBuilderImpl
):
this.schemaAutoTooling = SchemaAutoTooling.interpret( (String) configurationSettings.get( AvailableSettings.HBM2DDL_AUTO ) );
... y enum
valores internos de ambos org.hibernate.boot.SchemaAutoTooling
y org.hibernate.tool.schema.Action
no están expuestos públicamente.
A continuación, una DataSource
configuración programática de muestra (utilizada en una de mis aplicaciones Spring Boot) que utiliza un gambito gracias a, .name().toLowerCase()
pero solo funciona con valores sin guión (no, create-drop
por ejemplo):
@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();
}