【问题标题】:How the hibernate selects ojdbc jars if multiple jars are available?如果有多个罐子可用,hibernate 如何选择 ojdbc 罐子?
【发布时间】:2023-01-09 22:46:37
【问题描述】:

我们在 java 应用程序的“lib”文件夹中有 4 个 ojdbc jar,即 ojdbc14.jar、ojdbc6.jar、ojdbc7.jar 和 ojdbc8.jar。 我们已经在 XML 文件中声明了驱动程序的必要配置,如下所示,

<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />           

以上选项中,hibernate选择哪个ojdbc jar?它是选择第一个 jar 还是随机选择一个 ojdbc jar。

Hibernate 根据什么逻辑选择合适的 ojdbc jar 文件?

提前致谢。

【问题讨论】:

  • 与其试图改变类加载器的工作方式,也许您应该尝试检查是否真的有必要将同一库的 4 个版本放入您的类路径中。

标签: java hibernate ojdbc


【解决方案1】:

Hibernate 将选择在配置文件的 hibernate.connection.driver_class 属性中指定的 ojdbc jar 文件。在这种情况下,它会选择ojdbc14.jar因为这是包含oracle.jdbc.driver.OracleDriver班级。

Hibernate 不会随机选择一个 ojdbc jar 文件。它将使用配置文件中指定的 jar 文件来加载与数据库建立连接所需的 JDBC 驱动程序类。

请注意,如果指定的 jar 文件在类路径中不可用,Hibernate 将无法加载 JDBC 驱动程序类并将抛出一个ClassNotFoundException异常.

通常最好在配置文件中指定要使用的 ojdbc jar 文件的确切版本,以避免任何潜在的兼容性问题。

【讨论】:

  • ojdbc8.jar(很可能还有其他)包含相同的类,使您的答案不正确
  • 指定的 ojdbc jar 文件“ - 你能澄清一下在 Hibernate 中指定 JAR 文件名的位置吗?我只看到一个类名(例如oracle.jdbc.driver.OracleDriver)而不是一个 JAR 文件(例如ojdbc14.jar)。此外,示例类名在问题存在于问题中给出的多个 JAR 文件示例中。
  • 那就是ChatGPT
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 2016-01-19
相关资源
最近更新 更多