19

persistence.xmlSpring JPA Web アプリケーションの典型的なファイルを取り除こうとしています。EntityManagerこれまでのところ、次のように正常に注入できました。

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

しかし、上記の残りの 2 つの休止状態のプロパティを設定するにはどうすればよいですか? ありがとう

4

2 に答える 2

26

Spring は、プロバイダーに依存しない方法でこれらのオプションを構成する方法を提供しますAbstractJpaVendorAdapter(setDatabase()およびを使用しますがsetGenerateDdl()setGenerateDdl()DDL モードは使用しません)。

または、 (または)をLocalContainerEntityManagerFactory使用して任意のプロパティを渡すことができます。setJpaProperties()setJpaPropertyMap()

Properties props = new Properties();
props.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
props.put("hibernate.hbm2ddl.auto", "create");
factoryBean.setJpaProperties(props);
于 2012-09-02T15:13:46.663 に答える