استعلام JOOQ الموجه للكائنات
jOOQ، أو jOOQ اختصاراً ، هي مكتبة برمجية خفيفة الوزن لرسم خرائط قواعد البيانات مكتوبة بلغة جافا ، وتُطبّق نمط السجل النشط . تهدف هذه المكتبة إلى الجمع بين خصائص قواعد البيانات العلائقية وقواعد البيانات الكائنية، وذلك من خلال توفير لغة خاصة بالمجال لإنشاء الاستعلامات من الفئات المُولّدة من مخطط قاعدة البيانات .
نموذج
يؤكد jOOQ على ضرورة إعطاء الأولوية لـ SQL في أي عملية تكامل مع قواعد البيانات. ولذلك، فهو لا يُقدم لغة استعلام نصية جديدة ، بل يُتيح إنشاء استعلامات SQL بسيطة من كائنات jOOQ وشفرة مُولّدة من مخطط قاعدة البيانات. ويستخدم jOOQ بروتوكول JDBC لاستدعاء استعلامات SQL الأساسية.
على الرغم من أنها توفر تجريدًا فوق JDBC، إلا أن jOOQ لا تمتلك نفس القدر من الوظائف والتعقيد مثل مكتبات ربط الكائنات العلائقية القياسية مثل EclipseLink أو Hibernate .
يُوفر تقارب jOOQ مع لغة SQL مزايا تفوق مكتبات ربط الكائنات العلائقية التقليدية. إذ تحتوي SQL على العديد من الميزات التي لا يُمكن استخدامها في نموذج البرمجة الكائنية ؛ ويُشار إلى هذه الاختلافات بـ" عدم توافق الكائنات العلائقية" . وبفضل تقاربها مع SQL، تُساعد jOOQ في تجنب أخطاء بناء الجملة ومشاكل ربط الأنواع. كما تُعالج ربط المتغيرات. بالإضافة إلى ذلك، يُمكن في jOOQ إنشاء استعلامات بالغة التعقيد، تتضمن استخدام الأسماء المستعارة، والاتحادات ، والاستعلامات المتداخلة، وعمليات الربط المعقدة . كما تدعم jOOQ ميزات خاصة بقواعد البيانات، مثل أنواع البيانات المعرفة من قِبل المستخدم (UDTs) ، وأنواع التعداد ، والإجراءات المخزنة ، والدوال الأصلية.
مثال
استعلام متداخل يختار من جدول ذي اسم مستعار
-- تحديد المؤلفين الذين نفدت كتبهم SELECT * FROM AUTHOR a WHERE EXISTS ( SELECT 1 FROM BOOK WHERE BOOK . STATUS = 'SOLD OUT' AND BOOK . AUTHOR_ID = a . ID );وما يعادله في لغة jOOQ DSL:
// استخدم الجدول المُستعار في عبارة التحديد create.selectFrom ( table ( "AUTHOR" ). as ( "a" ) ) . where ( exists ( selectOne ( ) . from ( table ( "BOOK" )) . where ( field ( "BOOK.STATUS" ). equal ( field ( "BOOK_STATUS.SOLD_OUT" ))) . and ( field ( "BOOK.AUTHOR_ID" ). equal ( field ( "a.ID" )))));أو ببساطة، استخدام توليد التعليمات البرمجية من بيانات تعريف قاعدة البيانات لإنشاء الثوابت:
// استخدم الجدول المستعار في عبارة التحديد النهائية Author a = AUTHOR.as ( " a " );إنشاء . تحديد من ( أ ) . حيث ( يوجد ( تحديد واحد ( ) . من ( كتاب ) . حيث ( حالة الكتاب . يساوي ( حالة الكتاب . نفدت الكمية )) . و ( معرف مؤلف الكتاب . يساوي ( معرف أ ) )));انظر أيضاً
مراجع
- ↑ "الوسوم · jOOQ/jOOQ" . github.com . تم الاطلاع عليه بتاريخ 2025-08-06 .
روابط خارجية
- الصفحة الرئيسية لـ jOOQ
- استخدام Spring Boot مع jOOQ
- JSR-341 مؤرشف بتاريخ 12 أبريل 2016 في أرشيف الإنترنت (Wayback Machine) .
- تمت أرشفة JaQu في 5 مايو 2021 على موقع Wayback Machine
- Linq4j
- كوير
- استعلام DSL
- رسم الخرائط بين الكائنات والعلاقات
- مكتبات لغة البرمجة جافا
- منصة جافا للمؤسسات
