يحتوي MyBatis على ميزة ذاكرة التخزين المؤقت للاستعلام القوية التي يمكن تكوينها وتخصيصها بسهولة شديدة. بشكل افتراضي ، لم يتم تمكين ذاكرة التخزين المؤقت. لتمكين ذاكرة التخزين المؤقت من المستوى 2 ، تحتاج إلى إضافة سطر إلى ملف تعيين SQL الخاص بك:
<cache/>
هذا كل شيء حرفيا. تأثير هذا البيان البسيط هو كما يلي:
1. سيتم تخزين جميع عبارات تحديد جميع البيانات في ملف التعيين.
2. قم بتخطيط جميع الإدراج وتحديث وحذف العبارات في ملف البيان سيقوم بتحديث ذاكرة التخزين المؤقت.
3. سيتم إعادة محاكمة ذاكرة التخزين المؤقت باستخدام الخوارزمية الأقل استخدامًا (LRU ، الأقل استخدامًا).
4. وفقًا للجدول الزمني (مثل عدم وجود فاصل زمني للتدفق ، لا يوجد فاصل تحديث) ، لن يتم تحديث ذاكرة التخزين المؤقت بأي ترتيب زمني.
5. تخزين ذاكرة التخزين المؤقت 1024 إشارات إلى مجموعة أو كائن القائمة (بغض النظر عن ما تعيد طريقة الاستعلام).
6. سيتم اعتبار ذاكرة التخزين المؤقت ذاكرة التخزين المؤقت للقراءة/الكتابة (القابلة للقراءة/القابلة للكتابة) ، مما يعني أن استرجاع الكائن لم يتم مشاركته ويمكن تعديله بأمان من قبل المتصل دون التدخل في التعديلات المحتملة التي أجراها المتصلين أو المواضيع الأخرى.
يمكن تعديل كل هذه الخصائص بواسطة خصائص عناصر ذاكرة التخزين المؤقت. على سبيل المثال:
<cache exfiction = "fifo" flushinterval = "60000" size = "512" readonly = "true"/>
ينشئ هذا التكوين الأكثر تقدماً ذاكرة التخزين المؤقت FIFO ويتم تحديثها كل 60 ثانية ، وتخزين 512 إشارة إلى كائن النتيجة أو القائمة ، ويعتبر الكائن الذي تم إرجاعه للقراءة فقط ، لذلك تعديلها بين المتصلين في مؤشرات ترابط مختلفة في تعارض.
استراتيجيات الاسترجاع المتاحة هي:
الافتراضي هو LRU.
يمكن ضبط Flushinterval على أي عدد صحيح إيجابي ، وهي تمثل فترة زمنية معقولة ميلي ثانية. لم يتم تعيين الافتراضي ، أي أنه لا يوجد فاصل تحديث ، ويتم تحديث ذاكرة التخزين المؤقت فقط عند استدعاء البيان.
يمكن ضبط حجم (عدد المراجع) على أي عدد صحيح موجب ، مع تذكر عدد الكائنات التي تقوم بها ذاكرة التخزين المؤقت وعدد موارد الذاكرة المتاحة في بيئة التشغيل الخاصة بك. القيمة الافتراضية هي 1024.
يمكن ضبط خاصية ReadOnly على True أو False. تقوم ذاكرة التخزين المؤقت للقراءة فقط بإرجاع نفس مثيل كائن ذاكرة التخزين المؤقت إلى جميع المتصلين. لذلك ، لا يمكن تعديل هذه الكائنات. هذا يوفر مزايا الأداء المهمة. تقوم ذاكرة التخزين المؤقت القابلة للقراءة والقابلة للكتابة بإرجاع نسخة من كائن ذاكرة التخزين المؤقت (عن طريق التسلسل). سيكون هذا أبطأ ، لكنه آمن ، لذلك فهو خاطئ افتراضيًا.
باستخدام ذاكرة التخزين المؤقت المخصصة
بالإضافة إلى طرق ذاكرة التخزين المؤقت المخصصة هذه ، يمكنك أيضًا تجاوز سلوك ذاكرة التخزين المؤقت تمامًا عن طريق تطبيق ذاكرة التخزين المؤقت الخاصة بك أو إنشاء محولات لسيناريوهات ذاكرة التخزين المؤقت لجهة خارجية أخرى.
<cache type = "com.domain.something.myCustomCache"/>
يوضح هذا المثال كيفية استخدام تطبيق ذاكرة التخزين المؤقت المخصص. يجب أن تنفذ الفئة المحددة بواسطة سمة type واجهة org.mybatis.cache.cache. هذه الواجهة هي واحدة من العديد من الواجهات المعقدة في إطار MyBatis ، ولكن من الجيد ببساطة إعطائها ما تفعله.
ذاكرة التخزين المؤقت للواجهة العامة {string getId () ؛ int gettize () ؛ void putObject (مفتاح الكائن ، قيمة الكائن) ؛ الكائن getObject (مفتاح الكائن) ؛ Boolean Haskey (مفتاح الكائن) ؛ الكائن removeObject (مفتاح الكائن) ؛ باطل clear () ؛ ReadWritelock getReadWritelock () ؛ } ذاكرة التخزين المؤقت المرجعية
ربما في وقت ما في المستقبل ، سترغب في مشاركة نفس تكوين ذاكرة التخزين المؤقت والحالات في مساحة الاسم. في هذه الحالة ، يمكنك استخدام عنصر Cache-Ref للرجوع إلى ذاكرة التخزين المؤقت الأخرى.
<cache-ref namepace = "com.someone.application.data.somemapper"/>