如何使用持久性

时间:2016-07-07 16:57:10

标签: java hibernate jpa jdbc persistence

我在persistence.xml中设置了数据库连接,包括服务器url和用户名/密码。但是,如果我想在开发环境(dev / qa / stg / prod)之间切换,是否有更好的方法来更改配置而不是手动修改persistence.xml?

我使用jdbc连接与hibernate一起调用存储过程。 jdbc连接更灵活。它根据环境变量DEV_ENV连接到不同的数据库。

// DEV DB
if (env.equalsIgnoreCase("dev")) {
    connectionURL = "jdbc:oracle:thin:@ldap://mdaoid.mdanderson.org:389/risdev3, cn=OracleContext,dc=mdacc,dc=tmc,dc=edu";
    user = "ristore_owner";
    pass = "ristoreowner987";
}
// QA DB
else if (env.equalsIgnoreCase("qa")) {
    connectionURL = "jdbc:oracle:thin:@ldap://mdaoid.mdanderson.org:389/risdev3, cn=OracleContext,dc=mdacc,dc=tmc,dc=edu";
    user = "ristore_owner_qa";
    pass = "ristore987q";
}

如何以相同的方式配置hibernate数据库连接,选择环境变量并决定动态连接哪个数据库?

编辑:人们向我展示了如何通过从tomcat服务器获取数据库信息的战争来实现这一目标。但是,我的是一个我不会部署的java应用程序(jar)。我将其设置为cron作业,每周运行jar。

2 个答案:

答案 0 :(得分:1)

  1. 创建两个xml配置文件。 persistenceDev.xml和persistenceQA.xml

  2. 为每个环境添加网址,用户和密码。

  3. 然后用户SessionFactory创建会话
  4. 注意:您唯一更改的是配置文件名。 我提供的是命令行参数或静态最终变量。 假设,假设0 = dev,1 = qa。

    (double)

    获取配置文件后的代码不会更改。

答案 1 :(得分:0)

我看到你以某种方式提供环境。我的建议是使用构建工具(如Maven,Gradle等),通过它可以提供像UAT,Dev,Prod这样的实际环境。

然后您可以拥有多个配置文件,例如application-dev.xml,application-uat.xml。在构建期间,您可以使用构建工具加载适当的配置文件。

作为在Maven中执行此操作的参考,您可以查看here