2012-09-02 35 views
9

Tôi đang cố gắng loại bỏ tệp persistence.xml điển hình trong ứng dụng web Spring JPA. Cho đến nay, tôi đã được quản lý để tiêm EntityManager thành công như sau:Làm thế nào để thiết lập một số thuộc tính Hibernate trong Spring JPA Web Application?

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

    } 

} 

Tôi đã cố gắng để di chuyển các thuộc tính của persistence.xml của tôi cho các nguồn dữ liệu:

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

nhưng làm thế nào để tôi đặt hai thuộc tính ngủ đông còn lại ở trên? Cảm ơn

+0

cũng http://stackoverflow.com/questions/7416024/spring-3-1-datasource-not- thấy autowired-to-configuration-class –

Trả lời

14

Spring cung cấp một cách để cấu hình các tùy chọn này bằng cách cung cấp dịch vụ độc lập sử dụng AbstractJpaVendorAdapter (setDatabase()setGenerateDdl(), mặc dù setGenerateDdl() không mất chế độ DDL).

Ngoài ra, bạn có thể vượt qua các thuộc tính tùy ý để sử dụng LocalContainerEntityManagerFactorysetJpaProperties() (hoặc setJpaPropertyMap()):

Properties props = new Properties(); 
props.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); 
props.put("hibernate.hbm2ddl.auto", "create"); 
factoryBean.setJpaProperties(props); 
Các vấn đề liên quan