Liquibase和Hibernate从相同的属性文件

时间:2018-01-19 08:35:41

标签: java hibernate properties liquibase

我在我的应用程序中使用了LiquibaseHibernate个库。它们都使用相同的数据库,但每个都需要它自己的properties文件。但是,某些特定于数据库的字段很常见。我想避免重复这些字段并将它们放在两个文件中。我想将这些属性放在Liquibase和Hibernate属性文件可以读取的单个文件中。

目前我有。

liquibase.properties

driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydb
username: root
password: root

hibernate.cfg.xml中

<hibernate-configuration>
    <session-factory>
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="hibernate.hbm2ddl.auto">none</property>

        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/mydb</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>

请注意这两个文件中的驱动程序,URL,用户名和密码是如何重复的。理想情况下,我会有这样的第三个文件。

database.properties

driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydb
username: root
password: root

然后就像。

liquibase.properties

driver: ${driver}
url: ${url}
username: ${username}
password: ${password}

hibernate.cfg.xml中

<hibernate-configuration>
    <session-factory>
        <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="hibernate.hbm2ddl.auto">none</property>

        <!-- Database connection settings -->
        <property name="connection.driver_class">${driver}</property>
        <property name="connection.url">${url}</property>
        <property name="connection.username">${username}</property>
        <property name="connection.password">${password}</property>

这样的事情可能吗?

1 个答案:

答案 0 :(得分:1)

这是一个SO答案(和问题),展示了如何将hibernate db config放在属性文件中:https://stackoverflow.com/a/25685198/332248

以下是liquibase如何为liquibase设置属性文件的文档(使用--defaultsFile选项):http://www.liquibase.org/documentation/command_line.html

所以应该可以将所有内容组合到一个hibernate.properties文件中,然后在运行liquibase时指定相同的文件。