طبقة العمل، طبقة البيانات، أين تضع الاستعلامات؟

StackOverflow https://stackoverflow.com/questions/1691339

  •  18-09-2019
  •  | 
  •  

سؤال

لدي طبقة وصول إلى البيانات لديها فئات منفصلة لكل جدول في قاعدة البيانات. كل فئة تجعل الكائنات المرجحة للصف في الجدول، ولديهم إنشاء وظائف وتحديث وحذف وجلب. انهم جميعا تمديد فئة dbobj. سؤالي هو، أقول أريد أن أكتب استفسارا SELECT * FROM table, ، ولدي ذلك في وظيفة. أين هو أفضل مكان لوضع هذا؟ في طبقة العمل أو المجموعة جميع الوظائف ذات الصلة في فصول طبقة البيانات الخاصة بكل منها؟ في PHP إذا كان هذا يهم، باستخدام MySQL.

هل كانت مفيدة؟

المحلول

ضع استفسارات SQL في طبقة البيانات.

لاستعلام مثل SELECT * FROM table, ، سواء أجريت طريقة فئة للنموذج نفسه، أو طريقة كائن مدير نموذجي، هو أمر أسلوب.

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

نصائح أخرى

لقد وجدت فقط سؤالك، وفكرت في إحضار وجهة نظر أخرى. يجب عليك في معظم التطبيقات (لن تقول كل ذلك، لكنه قريب منه) قم ببناء طبقة تجريد البيانات، ومعظم الأوقات المعرفة كإطار orm.

حذر على الرغم من أن طبقة الوصول إلى البيانات (DAL) لا ينبغي الخلط بينها معك طبقة المجال أو طبقة منطق الأعمال، اعتمادا على النهج المعماري الخاص بك. إذا كنت ترغب في الحصول على أعمق في هذا الموضوع، أعتقد أن كل مطور يجب أن تسعى ل مقالات مارتن فاولر, ، كما يمكنك أن تقرأ هذه بوست المدونة التي قمت بها منذ فترة، لا تقل أهمية عن م. فاولر، لكني قدمت بعض الأفكار حول هذه المسألة.

مع أطيب التحيات، ديفيد

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top