gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:56:35 25 4
gpt4 key购买 nike

我正在尝试摆脱 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com