java - Hibernate数据库连接配置

标签 java hibernate orm jdbc

我们有 2 个不同的服务器环境,使用相同的 Hibernate 配置。一台服务器具有对数据源的 JNDI 支持,但另一台服务器不支持。当前 Hibernate 配置被配置为使用 JNDI,这会在不支持 JNDI 的服务器上导致问题。

我还尝试将直接 JDBC 配置与 JNDI 配置一起放入配置文件中,但看起来 Hibernate 总是倾向于 JNDI 而不是直接 JDBC 配置(如果两者都存在)。

我的问题是,如果JNDI和connection_provider配置同时存在,会一样吗? Hibernate 仍然会通过 connection_provider 使用 JNDI 吗?或者有什么办法可以改变数据库连接属性的优先级?

我无法一直访问服务器,所以我想我确实在服务器时间窗口之前提出了这个问题。

提前致谢。

最佳答案

We have 2 different server environments using the same Hibernate configuration.

嗯,这可能不是预期的答案,但我感觉您自己在这里制造了问题:如果您的环境不同,请使用不同的配置。 会做如下:

  • 将所有常见内容放入 hibernate.cfg.xml 中(捆绑在应用程序中)
  • 将特定内容放入 hibernate.properties 文件中,并将“正确的内容”放入每个应用程序的类路径的根目录中(但在应用程序外部)。

例如,这将是“JNDI 环境”的 hibernate.properties 的内容:

hibernate.connection.datasource = java:/comp/env/jdbc/test
hibernate.transaction.factory_class = org.hibernate.transaction.JTATransactionFactory
hibernate.transaction.manager_lookup_class = org.hibernate.transaction.JBossTransactionManagerLookup
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

这将是“非 JNDI 环境”的 hibernate.properties 的内容:

hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
hibernate.connection.username = myuser
hibernate.connection.password = secret
hibernate.c3p0.min_size=5
hibernate.c3p0.max_size=20
hibernate.c3p0.timeout=1800
hibernate.c3p0.max_statements=50
hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

关于java - Hibernate数据库连接配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2421616/

相关文章:

java - 更新 Java 中的 Midi 设备列表

java - JPA/hibernate : how to automatically update fields on entity update

java - 生成序列 NexVal 而不执行选择查询

java - 如何在 hibernate 中的多对一映射上定义反向级联删除

php - ORM 关系、PHP 和 SQL 连接

python - 动态添加group by子句到sql alchemy

java - 简单 Java 多态性的 C++ 等价物

java - 如何使用 Spring REST 和复杂的查询参数?

Hibernate:获取具有过滤子集合的整个层次结构

oracle - 如何向 Hibernate @ManyToMany 关系添加 where 子句?