سؤال

03Cp style=";text-align:right;direction:rtl"> أنا أعمل خدمة على شبكة الإنترنت. أعتقد أنني حصلت على فكرة الفرق بين التجميع والتكوين. التجميع لا يفرض دورة حياة / نطاق على الكائنات التي u003Cem>يشير إليهاu003C/em> . تكوين يفرض دورة حياة / نطاق على الكائنات التي u003Cem>تحتوي عليها / تملكهاu003C/em> .u003C/

03Cp style=";text-align:right;direction:rtl"> إذا قمت بحذف كائن مركب، فسيتم حذف جميع الكائنات التي تحتويها / تملكها أيضا، في حين أن حذف الجذر الإجمالي لا يحذف كائنات مرجعية.u003C/

03Cp style=";text-align:right;direction:rtl"> u003Cstrong>1)u003C/strong> ن أو هي الجذور الإجمالية كصطلح يشير إلى ما يعرف باسم كائن مركب؟u003C/

03Cp style=";text-align:right;direction:rtl"> u003Cstrong>2)u003C/strong> n عند إنشاء خدمة ويب سيكون لديك نقاط نهاية متعددة، في حالتي لدي كيان واحد Book وآخر يدعى Comment. لا معنى له بمغادرة التعليقات في طلبي إذا تم حذف الكتاب. لذلك، الكتاب هو كائن مركب. أعتقد أنه u003Cstrong>لاu003C/strong> ينبغي لي أن يكون لدي مستودع للتعليقات لأن ذلك من شأنه أن يكسر إنفاذ دورة الحياة والقواعد التي قد يكون فيها فئة الكتاب. ومع ذلك، لدي عنوان URL مثل (أمثلة فقط):u003C/

GET /books/1/comments
POST /books/1/comments

03Cp style=";text-align:right;direction:rtl"> الآن، إذا لم يكن لدي مستودع للتعليقات، فهل هذا يعني أنه لا بد لي من تحميل كائن الكتاب ثم إرجاع التعليقات المشار إليها؟ هل سمحت بإعادة قائمة كيانات التعليق من الكتب، هل هذا منطقي؟ قد يصبح المستودع الخاص بالكتاب كبيرا إلى حد ما مع جميع أنواع الأساليب. هل سمحت بالكتابة JPQL (استعلامات JPA) التي تستهدف التعليقات وليس الكتب داخل المستودع؟ ماذا عن ترقيم الصفحات وتصفية التعليقات. عند إضافة تعليق جديد الناجم عن نقطة النهاية بعد، هل تحتاج إلى تحميل الكتاب، أضف التعليق إلى الكتاب، ثم قم بتحديث كائن الكتاب بأكمله؟u003C/

03Cp style=";text-align:right;direction:rtl"> ما أقوم به حاليا هو وجود تعليق خاص، على الرغم من حذف التعليقات مع الكتاب. يمكن أن أحتاج إلى بعض الاتجاه حول كيفية القيام بذلك الصحيح. نظرا لأنك تعرض لك الأجسام الجذرية فقط في خدمات الاستراحة، أتساءل كيفية التعامل مع هذا في الخلفية.u003C/

03Cp style=";text-align:right;direction:rtl"> أنا أستخدم السبات والربيع.u003C/

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

المحلول

03Cp style=";text-align:right;direction:rtl"> ليس لديك أي خيار آخر من الاستعلام عن التعليقات حسب معرف الكتاب عند التعامل مع RDBMS. بالنسبة لقاعدة بيانات المستندات إنها قصة مختلفة وهذا هو السبب في أن قواعد بيانات المستندات أكثر ملاءمة ل DDD من RDBMSes.u003C/

03Cp style=";text-align:right;direction:rtl"> فقط تذكر، أنا أقرر هذا مرة أخرى، DDD لا يتعلق بالمستودعات وأي تنفيذ آخر قد ذكر إريك إيفانز في كتابه. إذا كنت تتحدث معه من أي وقت مضى، فستعلم أنه يندم أحيانا أن هناك الكثير من تفاصيل التنفيذ المدرجة في الكتاب. يفكر الناس كثيرا في المستودعات والمواصفات أكثر من النطاقات الفعلية ... ما لم يكن طلبك مناظر طبيعية متعددة المجالات ضخمة، لا شيء يمنعك من إصدار استفسارات مثل Session.Query.were.where.where (C => C.BookID == MyBookID) الصحيح في خدمة الراحة الخاصة بك. خدمتك هي بالفعل طبقة خدمة، ستكون تجريد أكثر مبالا. ذكرت بالفعل أن المستودعات تنمو وأريد أن معظم أساليب مستودعك هي مكالمات الوصول إلى بيانات سطر واحد. لن يقول أي خبير مجال هذا صحيح.u003C/

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