c3p0是一个成熟的、高并发的JDBC连接池库,支持PreparedStatement
对象的缓存和重用。
c3p0 可作为 Maven Central 上的托管依赖项使用, [groupId: com.mchange, artifactId: c3p0]
有关可用版本,请查看此处。
请参阅文档了解更多信息。
从当前的开发快照来看,这是最新的变更日志。
请向库作者提出意见和问题。
然而,请记住,他是一个糟糕的记者,基本上是一个混蛋。
尽管如此,我们还是非常感谢您的反馈。拉取请求被感激地接受。您也可以提出问题。
感谢您对 c3p0 的兴趣。我衷心希望您觉得它有用!
目前(v0.10.1),c3p0 是在 Java 11 VM 下构建的,目标是 JDK 7 类文件,以继续与旧版应用程序兼容。
为了提醒我切换到 Java 11,如果检测到意外版本,构建将会失败并出现异常。
如果您愿意,可以在build.sc
中注释掉此要求。这条线看起来像
require( sys.props( " java.runtime.version " ).startsWith( " 11 " ), s " Bad build JVM: ${sys.props( " java.runtime.version " )} -- We currently expect to build under Java 11. (We generate Java $JvmCompatVersion compatible source files.) " )
c3p0 依赖于优秀的构建工具mill
。
安装mill
。然后,在此存储库目录中,运行
$ mill jar
您将找到原始库out/jar.dest/out.jar
。
如果您维护本地ivy存储库,您可以在build.sc
中自定义publishVersion
,然后运行
$ mill publishLocal
构建文档
$ mill doc.docroot
然后您可以在浏览器中打开out/doc/docroot.dest/index.html
默认情况下,测试期望在jdbc:postgresql://localhost:5432/c3p0
找到数据库。正如您所看到的,我通常针对本地 postgres 数据库进行测试。您可以在build.sc
的forkArgs
函数中更改此设置。
c3p0 的测试是,嗯,非正式的,令人尴尬。有一个 junit 测试套件,但它只涵盖了 c3p0 功能的一小部分。要运行它,只需
$ mill test.test
大多数情况下,c3p0 是通过运行一些测试应用程序来测试的,并临时改变配置来查看事情如何工作。
如果您认为 c3p0 可以/应该进行更专业、更自动化的测试,我也是!我想要一个拉取请求。
build.sc
包含很多测试应用程序,但最重要的是
$ mill test.c3p0Benchmark
这是c3p0 最基本、最常见、测试的第一手段。它运行并计时了一堆不同的 c3p0 操作,并使库得到了很好的锻炼
$ mill test.c3p0Load
此示例将 c3p0 置于 100 个线程的负载之下,每个线程执行 1000 个数据库操作,然后终止。
$ mill test.c3p0PSLoad
这使得 c3p0 承受 100 个线程无限期执行数据库操作的负载。它使用PreparedStatement
进行数据库操作,因此是行使语句缓存的好方法。
测试时,您可以观察 c3p0 DataSource
的(大部分)配置,因为 c3p0 在第一次Connection
检出尝试时将其记录在INFO
中。测试时,验证您是否正在使用您期望的配置!
测试通过命令行参数和c3p0.properties
文件进行配置。要使用不同的配置,请编辑test/resources-local/c3p0.properties
。还要检查build.sc
中的forkArgs()
方法
有时您希望通过病态配置来测试库的运行情况。基线病理配置在test/resources-local-rough/c3p0.properties
中定义。
要实现此效果,请临时编辑build.sc
:
override def runClasspath : T [ Seq [ PathRef ]] = T {
super .runClasspath() ++ localResources()
// super.runClasspath() ++ localResourcesRough()
}
super.runClasspath() ++ localResources()
super.runClasspath() ++ localResourcesRough()
中的注释当然,您可以编辑test/resources-local-rough/c3p0.properties
。
通常,您会希望将日志集中在您正在测试的类或功能上。默认情况下,c3p0 测试配置为使用java.util.logging.
,并通过文件test/conf-logging/logging.properties
进行配置。
当然,如果您愿意,您可以更改配置(在c3p0.properties
中)以使用另一个日志记录库,但您可能需要修改构建以引入第三方日志记录库,并以它们自己的方式配置这些库。
由于 c3p0 目前在 Java 11 下构建,但 c3p0-loom 需要 Java 21,因此 c3p0 loom 是一个单独的项目。
这只是一个平行磨机项目。上述说明适用(除了c3p0-loom
没有独立的文档可供构建)。
c3p0 根据 LGPL v.2.1 或 EPL v.1.0 进行许可,由您选择。您还可以选择在任何高于 v.2.1 的 LGPL 版本下许可 c3p0。
注意: c3p0 在通过 Sonatype 的中央安全项目报告安全漏洞方面拥有良好的经验。如果您发现 c3p0 安全问题,请考虑通过 https://hackerone.com/central-security-project 报告该问题