ما هو تأثير كسول = "كاذبة" على العنصر فئة من الخرائط NHibernate؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا أعمل مع النظام القديم أنني تجريب مضيفا NHibernate ل. لدي الدرجة أنني بحاجة ليتم تعيينها إلى جدول، لكنه لا يملك الكثير من الأساليب الحالية التي ليست افتراضية.

واكتشفت أنني يمكن الحصول على NHibernate لتحميل الخرائط بنجاح حتى مع أساليب غير الافتراضية الحالية إذا أنا وضعت "كسول" السمة على العنصر فئة من ملف تعيين إلى "كاذبة". وأنا أتساءل ما تأثير هذا سيكون على استخدامي لNHibernate مع هذه الفئة.

وأنا أفهم معنى التحميل غير كسول على المجموعات التي تنتمي إلى كائن، ولكن أنا ليس من الواضح على معنى ما تحميل كسول أو حريصة على فئة سيكون. هل هذا يعني أن جميع المجموعات التي تنتمي إلى هذا الكائن سيتم حريصة تحميلها؟ أو أنه لا يعني أن NHibernate لم يعد يستخدم الوكيل الحيوية بدلا من الدرجة الفعلية؟ شيء آخر؟

وأيضا، ما هو أفضل مسار للعمل هنا؟ هو الإعداد الذي كسول = قيمة زائفة غير المستحسن؟ يجب أن إنشاء واجهة أن تنفذ الطبقة، ومن ثم تعيين ذلك إلى الطاولة؟ أو ينبغي أن مجرد لدغة الرصاصة وعلامة كل الأساليب القائمة على الطبقة الظاهرية؟

وشكرا مقدما على أي وجميع النصائح!

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

المحلول

وأنا دائما تحديد كسول = كاذبة على مستوى الفئة في NHIbernate، لأنني لا أريد أن NHibernate يجبرني على أن تعلن الخصائص هي أن تكون افتراضية، وإذا كنت لا تريد هذا في صفي نموذج.

وعند تحديد "كسول" في تعيين فئة (الافتراضي)، يستخدم NHibernate الطبقي "وكيل الحيوي" في وقت التشغيل. هذا وكيل الحيوي هي فئة يرث من الفئة الخاصة بك. ثم، بقدر ما أفهم، ينبغي تهيئة مثيل من فئة بتكاسل / حسب الطلب. في بعض الحالات، وهذا ينبغي أن يكون أفضل لأداء (على الأقل، هذا ما يقال).

ولكن، بما أنني لا أحب أن NHibernate يقول لي كيف صفي يجب أن تبدو، لقد المحدد دائما كسول = كاذبة لجميع دروسي، وأنا لم اجهت مشاكل حتى الان. :)

نصائح أخرى

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

وهكذا وضع كسول = الوسائل الخاطئة التي المجموعة الكاملة من الأشياء للعلاقة سيتم تحميلها عندما يتم تحميل سبيل المثال الدعوة. في بعض الحالات، وهذا على ما يرام، وحسن، ومناسبة، في حالات أخرى، وهذا يمكن أن يؤدي إلى مشكلات في الأداء.

وروب، هذا مجرد تصميم سيئة. سوف يكون لدى المستخدم قائمة من نوع دور لكن الدور لم يكن لديك قائمة من النوع المستخدم. المستخدم هو الجذر الكلي، للحصول على كل المستخدمين في الدور، وتحديد أسلوب على المستخدم لGetByRole (). 2 طريقة traversals مثلك وصفت جعل طراز مجال الرهيبة. جوجل المراجع الدائرية "ونرى لماذا هو سيء.

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