如何在项目使用Tomcat JNDI数据源查找

时间:2015-11-02 15:31:47

标签: java hibernate tomcat liquibase

我正在开发一个目前正在使用JNDI查找数据源的项目,该文件名为jdbc_customer.properties,它位于Tomcat lib文件夹中。在我的java代码中,它被设置为获取jdbc_customer.properties类中的PersistenceManager.java文件。

目前我的项目在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个不同版本的更改日志,如何在项目中正确实现它?

1 个答案:

答案 0 :(得分:0)

Liquibase changelog中的变更集和其他标记可以使用dbms属性进行标记,以指定应该应用于哪些数据库引擎。 Liquibase计算出它在运行时使用的dbms,并对更改日志进行过滤,以便仅考虑适用的更改。

page列出了当前可用的dbms类型及其短名称': 下面是一个示例,说明如何使用modifySql标记生成一些特定于平台的SQL:

$