Java 当项目使用TomcatJNDI数据源查找时,如何实现Liquibase变更日志
我正在从事一个项目,目前正在使用JNDI查找数据源,该文件名为Java 当项目使用TomcatJNDI数据源查找时,如何实现Liquibase变更日志,java,hibernate,tomcat,liquibase,Java,Hibernate,Tomcat,Liquibase,我正在从事一个项目,目前正在使用JNDI查找数据源,该文件名为jdbc\u customer.properties,位于Tomcat lib文件夹中。在我的java代码中,它被设置为获取我的PersistenceManager.java类中的jdbc\u customer.properties文件 目前我的项目运行在3个不同的数据库上,DB2、Oracle和MS SQL,很难为不同的数据库维护所有三个更新,因此我尝试使用liquibase来维护数据库版本控制 下面是处理数据库选择的Persist
jdbc\u customer.properties
,位于Tomcat lib文件夹中。在我的java代码中,它被设置为获取我的PersistenceManager.java
类中的jdbc\u customer.properties
文件
目前我的项目运行在3个不同的数据库上,DB2、Oracle和MS SQL,很难为不同的数据库维护所有三个更新,因此我尝试使用liquibase来维护数据库版本控制
下面是处理数据库选择的PersistenceManager.java
代码的一部分:
private EntityManagerFactory getEntityManagerFactory(){
Properties jdbc_cust = new Properties();
InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("jdbc_customer.properties");
String vendor = jdbc_cust.getProperty("OPT.dbvendor");
if ("oracle".equals(vendor)) {
dialect = "org.hibernate.dialect.Oracle10gDialect";
} else if ("db2".equals(vendor)) {
dialect = "org.hibernate.dialect.DB2Dialect";
} else if ("mssql".equals(vendor)) {
dialect = "org.hibernate.dialect.SQLServer2008Dialect";
}
我现在想做的是找到一种基于正确版本的数据库在部署时运行Liquibase changelog的方法。我已经创建了3个不同版本的变更日志,如何在我的项目中正确实现它?Liquibase变更日志中的变更集和其他标记可以标记为dbms属性,以指定它们应该应用于哪些数据库引擎。Liquibase计算出它在运行时使用的dbms,并对变更日志进行过滤,以便只考虑适用的变更 此列表列出了当前可用的dbms类型及其“短名称”: 以下示例显示了如何使用modifySql标记生成特定于平台的SQL:
<changeSet id="1" author="nvoxland">
<createTable tableName="person">
<column name="id" type="bigint"/>
<column name="firstname" type="varchar(255)"/>
<column name="lastname" type="varchar(255)"/>
</createTable>
<modifySql>
<replace replace="bigint" with="long"/>
</modifySql>
<modifySql dbms="mysql">
<append value=" engine innodb"/>
</modifySql>
</changeSet>
Liquibase变更日志中的变更集和其他标记可以用dbms属性进行标记,以指定它们应该应用于哪些数据库引擎。Liquibase计算出它在运行时使用的dbms,并对变更日志进行过滤,以便只考虑适用的变更 此列表列出了当前可用的dbms类型及其“短名称”: 以下示例显示了如何使用modifySql标记生成特定于平台的SQL:
<changeSet id="1" author="nvoxland">
<createTable tableName="person">
<column name="id" type="bigint"/>
<column name="firstname" type="varchar(255)"/>
<column name="lastname" type="varchar(255)"/>
</createTable>
<modifySql>
<replace replace="bigint" with="long"/>
</modifySql>
<modifySql dbms="mysql">
<append value=" engine innodb"/>
</modifySql>
</changeSet>
我实际上是在寻找一些Java实现建议,因为所有的变更记录都是创建的,我也对它们进行了更改,修改或创建新的变更记录并不是我现在想要做的事情。如果你想在Java中这样做,我建议查看Liquibase源代码本身。我实际上是在寻找一些Java实现建议,因为所有的变更记录都是创建的,我也对它们进行了更改,修改或创建新的变更记录并不是我现在想要做的。如果你想在Java中这样做,我建议查看Liquibase源代码本身。