java - 如何在 Spring JPA Web 应用程序中设置一些 Hibernate 属性?

标签 java spring hibernate jpa configuration

我正在尝试摆脱 Spring JPA Web 应用程序中典型的 persistence.xml 文件。到目前为止,我已经成功地注入(inject)了 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>

但是我如何设置上面剩下的两个 hibernate 属性呢?谢谢

最佳答案

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

关于java - 如何在 Spring JPA Web 应用程序中设置一些 Hibernate 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12237003/

相关文章:

java - Hibernate 具有相同类的多对多,无法编写 JSON : Infinite recursion

hibernate - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'USER_NAME' in 'where clause' - container managed authentication

java - 更新版本 Hibernate Jboss Ejb 和 Java

java - 将 .txt 文件中的字符串读入二维数组;忽略引号中的空格;仅使用 JDK

java - 字符数组隐藏密码jdbc

java - 从文件中保存和加载 SMO weka 模型

java - JDBC PreparedStatement Batch 在出错时继续插入

java - 重构一个简单填充的长方法

Spring Session table-name 属性不改变表名

java - 关键字 'statistics' 附近的语法不正确。 Spring.IO