c3p0 es una biblioteca de agrupación de conexiones JDBC madura y altamente concurrente, con soporte para almacenamiento en caché y reutilización de objetos PreparedStatement
.
c3p0 está disponible como dependencia administrada en Maven Central, [groupId: com.mchange, artifactId: c3p0]
Para ver las versiones disponibles, consulte aquí.
Consulte la documentación para obtener más información.
De la instantánea de desarrollo actual, aquí está el último CHANGELOG.
Dirija sus comentarios y preguntas al autor de la biblioteca.
Sin embargo, tenga en cuenta que es un corresponsal pésimo y básicamente un imbécil.
A pesar de eso, sus comentarios son muy apreciados. Las solicitudes de extracción se aceptan con gratitud. También puede abrir problemas.
Gracias por su interés en c3p0. ¡Espero que te resulte útil!
Por ahora (v0.10.1), c3p0 está construido bajo una VM Java 11, apuntando a archivos de clase JDK 7 para una compatibilidad continua con aplicaciones heredadas.
Para recordarme que debo cambiar a Java 11, la compilación fallará con una excepción si detecta una versión inesperada.
Puede comentar este requisito desde build.sc
si lo desea. Es la línea que parece
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 confía en la excelente mill
de construcción.
Instalar mill
. Luego, dentro de este directorio de repositorio, ejecute
$ mill jar
Encontrarás el archivo sin formato como biblioteca out/jar.dest/out.jar
.
Si mantiene un repositorio de Ivy local, puede personalizar publishVersion
en build.sc
y luego ejecutar
$ mill publishLocal
Para construir la documentación
$ mill doc.docroot
Luego puede abrir en su navegador out/doc/docroot.dest/index.html
De forma predeterminada, las pruebas esperan encontrar una base de datos en jdbc:postgresql://localhost:5432/c3p0
. Como puede ver, normalmente pruebo con una base de datos local de Postgres. Puede cambiar esto en la función forkArgs
de build.sc
.
Las pruebas de c3p0 son vergonzosamente informales. Existe un conjunto de pruebas junit, pero cubre una fracción muy pequeña de la funcionalidad de c3p0. Para ejecutar eso, es solo
$ mill test.test
Principalmente, c3p0 se prueba ejecutando algunas aplicaciones de prueba y variando la configuración ad hoc para ver cómo funcionan las cosas.
Si crees que c3p0 podría/debería probarse de forma más profesional y automática, ¡yo también! Me encantaría una solicitud de extracción.
build.sc
contiene muchas aplicaciones de prueba, pero las más importantes son
$ mill test.c3p0Benchmark
Esta es la prueba de primer recurso más básica y común de c3p0. Ejecuta y cronometra un montón de operaciones c3p0 diferentes y somete a la biblioteca a un ejercicio bastante bueno.
$ mill test.c3p0Load
Éste pone a c3p0 bajo la carga de 100 subprocesos que realizan 1000 operaciones de base de datos cada uno y luego finaliza.
$ mill test.c3p0PSLoad
Éste pone a c3p0 bajo la carga de 100 subprocesos que realizan operaciones de base de datos de forma indefinida. Utiliza PreparedStatement
para sus operaciones de base de datos, por lo que es una buena forma de ejercitar el caché de declaraciones.
Puede observar (la mayor parte) de la configuración de su DataSource
c3p0 cuando realiza la prueba, porque c3p0 la registra en INFO
en el primer intento de pago Connection
. ¡Al realizar la prueba, verifique que esté trabajando con la configuración que espera!
Las pruebas se configuran mediante argumentos de línea de comandos y mediante un archivo c3p0.properties
. Para jugar con diferentes configuraciones, edite test/resources-local/c3p0.properties
. Consulte también el método forkArgs()
en build.sc
A veces uno quiere poner a prueba la biblioteca con una configuración patológica. Una configuración patológica de referencia se define en test/resources-local-rough/c3p0.properties
.
Para lograr este efecto, edite temporalmente build.sc
:
override def runClasspath : T [ Seq [ PathRef ]] = T {
super .runClasspath() ++ localResources()
// super.runClasspath() ++ localResourcesRough()
}
super.runClasspath() ++ localResources()
super.runClasspath() ++ localResourcesRough()
Entonces, por supuesto, puedes editar test/resources-local-rough/c3p0.properties
.
A menudo querrás centrarte en el inicio de sesión en una clase o función que estés probando. De forma predeterminada, las pruebas c3p0 están configuradas para usar java.util.logging.
, y configurarse mediante el archivo test/conf-logging/logging.properties
.
Por supuesto, puede cambiar la configuración (en c3p0.properties
) para usar otra biblioteca de registro si lo desea, pero es posible que deba modificar la compilación para incorporar bibliotecas de registro de terceros y configurar esas bibliotecas a su manera.
Debido a que c3p0 actualmente se compila bajo Java 11, pero c3p0-loom requiere Java 21, c3p0 loom es un proyecto separado.
Es simplemente un proyecto de fábrica paralelo. Se aplican las instrucciones anteriores (excepto que c3p0-loom
no tiene documentación independiente para construir).
c3p0 tiene licencia LGPL v.2.1 o EPL v.1.0, a su elección. También puede optar por obtener la licencia de c3p0 con cualquier versión de LGPL superior a la v.2.1.
Nota: c3p0 ha tenido una buena experiencia al informar sobre una vulnerabilidad de seguridad a través del Proyecto de Seguridad Central de Sonatype. Si encuentra un problema de seguridad c3p0, considere informarlo a través de https://hackerone.com/central-security-project