与其他库共享 Hibernate 连接

Share Hibernate connection with other libraries

我正在 Java 中编写 Web 应用程序并使用 Hibernate 将数据库与我的 java 对象进行映射。在 Hibernate 中,我使用 C3PO 池连接到数据库。现在我需要安排一些任务。因此我将使用 Quartz。现在计划任务将存储在数据库中。可以和Quartz共享C3PO的连接池吗?这样数据库设置就在同一个文件中,只有一个库负责打开数据库连接。

这有点主观,但足以说明,如果您想共享连接,您有多种选择。

如果您正在使用 spring,请将 c3p0 连接池定义为一个 bean,并将其注入到 Hibernate 会话工厂和 Quartz 调度程序 bean 中。

如果您试图保持 "pure" 而不是使用 Spring,您可以在容器级别定义基于 JNDI 的数据源。

这两种方法都有一些细微差别。

遗憾的是,除了 'java'、'quartz-scheduler' 和 'c3p0' 作为标签之外,没有说明您正在努力成为什么样的人以及您目前正在使用什么,答案将是充其量是模糊的。

编辑

感谢 OP 添加更多信息。

因此关于该信息,如果您使用的是动态 Web 项目,您可以将特定于容器的部署描述符添加到 WebContent 目录。

  • 对于tomcat,META-INF/context.xml
  • 对于 Jetty,WEB-INF/jetty-web.xml

通过这些,您可以定义 JNDI 数据源。有关如何执行此操作的信息,请参阅特定容器。完成后,Hibernate 和 Quartz 可以配置为对您配置的数据源使用 JNDI 引用。