每个配置文件的不同hibernate属性

时间:2016-03-31 21:12:29

标签: spring hibernate spring-boot

我使用Hibernate和Spring Data获得了春季启动项目。有多个配置文件,因此项目可以在测试配置文件,运行配置文件等中运行。每个配置文件都需要不同的Hibernate属性。 让我们说我宁愿在.property文件中定义keep属性而不是Java类。 application.properties附带了将profile指定为application- {profile} .properties的功能。不幸的是,这不是hibernate.properties的情况。或者是吗?有没有办法使用.properties文件为每个配置文件注入不同的hibernate属性?

3 个答案:

答案 0 :(得分:1)

有一个String Spring查找,它被称为persistenceXmlLocation,您可以从中Bean创建一个import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration @Profile("dev") public class DefaultDatabaseConfiguration { @Bean(name = "persistenceXmlLocation") public String persistenceXmlLocation() { return "classpath:META-INF/persistence.xml"; } } ,并根据您的活动配置文件使用不同的值。例如:

test

然后,对于您的不同个人资料,import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration @Profile("test") public class TestDatabaseConfig { @Bean(name = "persistenceXmlLocation") public String persistenceXmlLocation() { return "classpath:META-INF/test-persistence.xml"; } } 在这种情况下,您就拥有了这个:

Environment

您也可以通过将Configuration连接到function add_up($first, $second){ if(!isset($first, $second)){ return 'No numbers bitch';} else { return $first + $second; } } echo add_up(); 类并根据活动的配置文件返回不同的persistence.xml位置来实现此目的。

答案 1 :(得分:1)

使用

有一种最简单的方法
  

maven ressource filtering

因此,您可以在 src / main 下添加文件夹过滤器,并将每个配置文件的所有配置文件放在该文件夹ex:(application-test.properties,application -run.properties ...),然后将此代码添加到您的pom:

<build>
    <!--enter code here -->
<resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <filters>
            <filter>src/main/filters/application-${env}.properties</filter>
        </filters>

</build>

因此,如果您想要选择应用测试文件(mvn clean package -Denv=test) -Denv = test 来获取配置文件>

答案 2 :(得分:1)

如果您正在使用Spring Boot(我假设您使用spring-boot标记标记了问题),则可以通过 application.properties application- {profile配置hibernate已经由Spring Boot加载了.properties 。只需考虑支持三个级别的属性:

  • 任何JPA提供程序的常规属性。例如:

    spring.jpa.show-SQL =真

  • 一些直接的Hibernate属性。例如:

    spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.hibernate.ddl-AUTO =验证

  • JPA提供程序的其他属性。这些是你的情况下 hibernate 所期望的相同属性,只是将 spring.jpa.properties 添加到属性名称中。例如:

    spring.jpa.properties.hibernate.format_sql =真 spring.jpa.properties.hibernate.generate_statistics =假

查看Spring Boot参考文档以及JpaProperties启动文件,了解前两个级别支持哪些属性。