التخزين المؤقت أحمق على مؤشرات فريدة من نوعها؟

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

  •  06-09-2019
  •  | 
  •  

سؤال

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

لا يبدو أن Lhibernate لدعم تحميل كائن حسب المفتاح الفريد الذي يتم تخزينه بعد ذلك بالطريقة نفسها التي يتم تحميلها () أو احصل عليها (). هل أنا صحيح عندما أقول ذلك؟

إذا كنت آنذاك، فسيضطر فقط إلى الدور الخاص بي عبر طريقة تمديد على طول أسطر LoadByuniqueIndex (خاصية Lambda، كائن كائن).

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

المحلول

نعم، أنت على حق، لا تحصل NH على كيانات مباشرة من ذاكرة التخزين المؤقت لأي شيء باستثناء الهوية. لاحظ أن كل شيء ما عدا المعرف قد يتغير ويحتاج إلى البحث في قاعدة البيانات.

كن حذرا عند التخزين المؤقت. "التخزين المؤقت لأوانه هو جذر كل الشر" أو أيا كان. على محمل الجد، إذا لم تكن متأكدا من أن تحصل على مشاكل في الأداء البارزة، فلا تكتب ذاكرة التخزين المؤقت الخاصة بك.

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

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

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