2012-09-02 7 views
9

मैं वसंत जेपीए वेब एप्लिकेशन में सामान्य persistence.xml फ़ाइल से छुटकारा पाने की कोशिश कर रहा हूं।स्प्रिंग जेपीए वेब एप्लिकेशन में कुछ हाइबरनेट गुण कैसे सेट करें?

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

लेकिन कैसे मैं सेट अब तक, मैं निम्नलिखित के साथ सफलतापूर्वक EntityManager इंजेक्षन में कामयाब रहे उपरोक्त दो शेष हाइबरनेट गुण? धन्यवाद

+0

भी http://stackoverflow.com/questions/7416024/spring-3-1-datasource-not- देखना autowired-टू-विन्यास श्रेणी –

उत्तर

14

स्प्रिंग 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); 
संबंधित मुद्दे