java - 与其他库共享 Hibernate 连接

标签 java quartz-scheduler c3p0

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

最佳答案

这是一个主观的事情,但足以说明,如果您想共享连接,您有多种选择。

如果您使用的是 spring,请将 c3p0 连接池定义为一个 bean,并将其注入(inject)到 Hibernate session 工厂和 Quartz 调度程序 bean 中。

如果您想保持“纯粹”并且不使用 Spring,您可以在容器级别定义基于 JNDI 的数据源。

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

不幸的是,如果没有表明您想要做到的“可移植性”以及您当前使用的内容(除了“java”、“quartz-scheduler”和“c3p0”之外)作为标签,那么答案充其量也将是模糊的。

编辑

感谢 OP 添加更多信息。

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

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

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

关于java - 与其他库共享 Hibernate 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40262649/

相关文章:

java - 使用 FileReader,如何读取 # 列表的下一行,然后将其乘以另一个值?

java - 使用 ActiveMQ 的 JMeter JMS 点对点采样器

java - Spring-Boot @Scheduled Cron 表达式在两个任务之间稍微延迟?

java - 取消部署应用程序时触发功能

java - c3p0 连接池,DataSources 工厂,如何关闭池?

java - 如何在 hibernate 中保留子类的父类(super class)变量?

java - getLastLocation 是多久之前的?

quartz-scheduler - Quartz Scheduler 初始化失败

java - autoCommit var 在关闭时是否在 c3p0 中重置?

java - c3p0:检测数据库关闭/打开事件