c3p0 هي مكتبة تجميع اتصالات JDBC ناضجة ومتزامنة للغاية، مع دعم للتخزين المؤقت وإعادة استخدام كائنات PreparedStatement
.
يتوفر c3p0 كاعتماد مُدار على Maven Central، [groupId: com.mchange, artifactId: c3p0]
للاطلاع على الإصدارات المتاحة، انظر هنا.
يرجى الاطلاع على الوثائق للمزيد.
من لقطة التطوير الحالية، إليك أحدث سجل التغيير.
يرجى توجيه التعليقات والأسئلة إلى مؤلف المكتبة.
ومع ذلك، يرجى أن تضع في اعتبارك أنه مراسل سيئ للغاية وأحمق في الأساس.
على الرغم من ذلك، ملاحظاتك موضع تقدير كبير. يتم قبول طلبات السحب مع الامتنان. يمكنك أيضًا فتح المشكلات.
شكرًا لك على اهتمامك بـ c3p0. وآمل أن تجد أنه من المفيد!
في الوقت الحالي (الإصدار 0.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 محلي، فيمكنك تخصيص publishVersion
في build.sc
، ثم تشغيله
$ mill publishLocal
لبناء الوثائق
$ mill doc.docroot
يمكنك بعد ذلك فتح out/doc/docroot.dest/index.html
في متصفحك
افتراضيًا، تتوقع الاختبارات العثور على قاعدة بيانات في jdbc:postgresql://localhost:5432/c3p0
. كما ترون، عادةً ما أقوم بالاختبار مقابل قاعدة بيانات postgres محلية. يمكنك تغيير هذا في وظيفة forkArgs
الخاصة بـ build.sc
.
اختبار 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
لعمليات قاعدة البيانات الخاصة به، لذا فهي طريقة جيدة لاستخدام ذاكرة التخزين المؤقت للبيان.
يمكنك ملاحظة (معظم) تكوين DataSource
c3p0 الخاص بك عند الاختبار، لأن c3p0 يقوم بتسجيله في INFO
عند أول محاولة لسحب Connection
. عند الاختبار، تأكد من أنك تعمل بالتكوين الذي تتوقعه!
يتم تكوين الاختبارات بواسطة وسيطات سطر الأوامر وبواسطة ملف c3p0.properties
. للعب بتكوينات مختلفة، قم بتحرير test/resources-local/c3p0.properties
. تحقق أيضًا من طريقة forkArgs()
في build.sc
في بعض الأحيان تريد أن تضع المكتبة في خطواتها مع التكوين المرضي. يتم تعريف التكوين المرضي الأساسي في 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، حسب اختيارك. يمكنك أيضًا اختيار ترخيص c3p0 ضمن أي إصدار من LGPL أعلى من الإصدار v.2.1.
ملحوظة: يتمتع c3p0 بخبرة جيدة في الإبلاغ عن الثغرة الأمنية عبر مشروع الأمن المركزي الخاص بـ Sonatype. إذا وجدت مشكلة أمنية في c3p0، ففكر في الإبلاغ عنها عبر https://hackerone.com/central-security-project