كائن الوصول إلى البيانات

في مجال البرمجيات ، يُعدّ كائن الوصول إلى البيانات ( DAO ) نمطًا يوفر واجهة مجردة لنوع من قواعد البيانات أو آليات التخزين الأخرى . ومن خلال ربط استدعاءات التطبيق بطبقة التخزين، يُتيح كائن الوصول إلى البيانات عمليات البيانات دون الكشف عن تفاصيل قاعدة البيانات. يدعم هذا العزل مبدأ المسؤولية الواحدة ، حيث يفصل بين احتياجات التطبيق من الوصول إلى البيانات، من حيث الكائنات وأنواع البيانات الخاصة بالمجال (الواجهة العامة لكائن الوصول إلى البيانات)، وبين كيفية تلبية هذه الاحتياجات باستخدام نظام إدارة قواعد بيانات محدد (تنفيذ كائن الوصول إلى البيانات).

على الرغم من أن نمط التصميم هذا قابل للتطبيق على معظم لغات البرمجة، ومعظم البرامج ذات احتياجات الاستمرارية، ومعظم قواعد البيانات، إلا أنه يرتبط تقليديًا بتطبيقات Java EE وقواعد البيانات العلائقية (التي يتم الوصول إليها عبر JDBC API نظرًا لأصلها في إرشادات أفضل الممارسات لشركة Sun Microsystems [ 1 ] "Core J2EE Patterns").

يمكن العثور على هذا العنصر في طبقة الوصول إلى البيانات في بنية الطبقات الثلاث .

توجد طرق مختلفة يمكن من خلالها تنفيذ هذا الكائن:

  • وحدة DAO واحدة لكل جدول.
  • كائن DAO واحد لجميع الجداول الخاصة بنظام إدارة قواعد البيانات (DBMS) معين.
  • حيث يقتصر استعلام SELECT على جدول الهدف فقط ولا يمكنه تضمين عمليات الربط (JOINS) أو عمليات الاتحاد (UNIONS) أو الاستعلامات الفرعية أو تعابير الجداول المشتركة (CTEs).
  • حيث يمكن أن يحتوي استعلام SELECT على أي شيء يسمح به نظام إدارة قواعد البيانات.

المزايا

يوفر استخدام كائنات الوصول إلى البيانات (DAOs) ميزة واضحة: فهو يفصل بين جزأين من التطبيق لا يحتاجان إلى معرفة بعضهما البعض. يتيح هذا الفصل لهما التطور بشكل مستقل. في حال تغير منطق العمل، يمكنه الاعتماد على واجهة DAO متسقة. في الوقت نفسه، لن تؤثر التعديلات على منطق التخزين على عملاء DAO. [ 2 ] [ 3 ]

تُخفى جميع تفاصيل التخزين عن باقي أجزاء التطبيق (انظر إخفاء المعلومات ). يُسهّل اختبار الوحدة البرمجية باستبدال كائن اختبار بديل بـ DAO في الاختبار، مما يجعل الاختبارات مستقلة عن طبقة الثبات.

في سياق لغة برمجة جافا ، يمكن تنفيذ DAO بطرق متنوعة. ويتراوح ذلك بين واجهة بسيطة تفصل الوصول إلى البيانات عن منطق التطبيق، إلى أطر العمل والمنتجات التجارية.

تأتي تقنيات مثل Java Persistence API و Enterprise JavaBeans مدمجة في خوادم التطبيقات، ويمكن استخدامها في التطبيقات التي تستخدم خادم تطبيقات Java EE. تتوفر منتجات تجارية مثل TopLink تعتمد على ربط الكائنات العلائقية (ORM). تشمل برامج ORM مفتوحة المصدر الشائعة Doctrine و Hibernate و iBATIS وتطبيقات JPA مثل Apache OpenJPA . [ 4 ]

العيوب

تشمل العيوب المحتملة لاستخدام DAO تسريب التجريد ، وتكرار التعليمات البرمجية ، وانعكاس التجريد . على وجه الخصوص، قد يُخفي تجريد DAO ككائن جافا عادي التكلفة العالية لكل عملية وصول إلى قاعدة البيانات. قد يُجري المطورون عن غير قصد استعلامات متعددة لقاعدة البيانات لاسترجاع معلومات كان من الممكن استرجاعها بعملية واحدة. إذا كان التطبيق يتطلب عدة DAOs، فقد يتعين كتابة نفس التعليمات البرمجية للإنشاء والقراءة والتحديث والحذف لكل DAO. [ 5 ]

لاحظ أن هذه العيوب لا تظهر إلا عندما يكون لديك DAO منفصل لكل جدول ويتم منع استعلام SELECT من الوصول إلى أي شيء آخر غير الجدول المستهدف.

الأدوات والأطر

انظر أيضاً

مراجع

  1. "أنماط J2EE الأساسية - كائنات الوصول إلى البيانات" . شركة صن مايكروسيستمز، 2007-08-02.
  2. "نمط تصميم كائن الوصول إلى البيانات (DAO)" . ديجيتال أوشن . 2022-08-03 . تم الاطلاع عليه بتاريخ 2024-07-08 .
  3. "نمط تصميم كائن الوصول إلى البيانات (DAO)" . GeeksforGeeks . 2017-08-26 . تم الاطلاع عليه بتاريخ 2024-07-08 .
  4. "نمط تصميم كائن الوصول إلى البيانات (DAO)" . GeeksforGeeks . 2017-08-26 . تم الاطلاع عليه بتاريخ 2024-01-29 .
  5. راجع الرابط http://www.ibm.com/developerworks/java/library/j-genericdao/index.html للاطلاع على الحلول البديلة
  6. هودجسون، كايل؛ ريد، دارين (23 يناير 2015). كتاب طبخ ServiceStack 4. دار نشر Packt المحدودة. ص. الفصل 4. ISBN  9781783986576تم الاطلاع عليه بتاريخ 22 يونيو 2016 .