2012-09-02 12 views
9

Estoy tratando de deshacerme del típico archivo persistence.xml en la aplicación web Spring JPA. Hasta ahora, he logrado inyectar el EntityManager con éxito con lo siguiente:¿Cómo configurar algunas propiedades de hibernación en la aplicación web Spring JPA?

@Configuration 
@EnableTransactionManagement 
public class JpaConfig { 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean(){ 

     LocalContainerEntityManagerFactoryBean factoryBean 
      = new LocalContainerEntityManagerFactoryBean(); 

     factoryBean.setDataSource(this.restDataSource()); 
     factoryBean.setPackagesToScan(new String[ ] { "com.jverstry" }); 
     factoryBean.setPersistenceUnitName("MyMy"); 

     JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(){ 
     { 
      // JPA properties ... 
     } 
     }; 

     factoryBean.setJpaVendorAdapter(vendorAdapter); 

     return factoryBean; 

    } 

    @Bean 
    public DataSource restDataSource(){ 

     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 

     dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); 
     dataSource.setUrl("jdbc:hsqldb:mem:testdb"); 
     dataSource.setUsername("sa"); 
     dataSource.setPassword(""); 

     return dataSource; 

    } 

    @Bean 
    public PlatformTransactionManager transactionManager(){ 

     JpaTransactionManager transactionManager = new JpaTransactionManager(); 

     transactionManager.setEntityManagerFactory(
      this.entityManagerFactoryBean().getObject()); 

     return transactionManager; 

    } 

} 

He conseguido pasar las propiedades de mi persistence.xml para la fuente de datos:

<properties> 
    ... 
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/> 
    <property name="hibernate.hbm2ddl.auto" value="create"/> 
</properties> 

pero cómo me puse las dos propiedades de hibernación restantes arriba? Gracias

+0

ver también http://stackoverflow.com/questions/7416024/spring-3-1-datasource-not- autowired-to-configuration-class –

Respuesta

14

Spring proporciona una manera de configurar estas opciones en forma independiente del proveedor utilizando AbstractJpaVendorAdapter (setDatabase() y setGenerateDdl(), aunque no toma setGenerateDdl() modo DDL).

Alternativamente, puede pasar propiedades arbitrarias a LocalContainerEntityManagerFactory usando setJpaProperties() (o setJpaPropertyMap()):

Properties props = new Properties(); 
props.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); 
props.put("hibernate.hbm2ddl.auto", "create"); 
factoryBean.setJpaProperties(props); 
Cuestiones relacionadas