2012-09-02 23 views
9

我想摆脱Spring JPA web应用程序中典型的persistence.xml文件。到目前为止,我已成功地用下面的成功注入EntityManager如何在Spring JPA Web应用程序中设置一些Hibernate属性?

@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; 

    } 

} 

我已成功地将我的persistence.xml的属性数据源:

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

但如何我设置上面两个剩余的hibernate属性?由于

+0

也http://stackoverflow.com/questions/7416024/spring-3-1-datasource-not-看到自动装配到配置类 – 2012-09-02 15:17:41

回答

14

Spring提供了一个方法来配置使用AbstractJpaVendorAdapter在供应商无关的方式这些选项(setDatabase()setGenerateDdl(),虽然setGenerateDdl()不采取DDL模式)。

或者,也可以使用setJpaProperties()(或setJpaPropertyMap())传递任意属性LocalContainerEntityManagerFactory

Properties props = new Properties(); 
props.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); 
props.put("hibernate.hbm2ddl.auto", "create"); 
factoryBean.setJpaProperties(props); 
相关问题