يرسل العميل نفس عبارة استعلام SQL إلى خادم قاعدة البيانات. إذا قمت بالوصول إلى قاعدة البيانات في كل مرة ، فسيؤدي ذلك إلى تدهور الأداء.
فكيف تتحسن؟
يوفر لنا MyBatis استراتيجية لذاكرة التخزين المؤقت من المستوى 1
بين فتح وإغلاق SQLSession ، سيحتفظ كائن SQLSession (في الواقع المنفذ) بكائن مخبأة. عند الاستعلام عن البيانات ، ابحث أولاً عما إذا كانت البيانات موجودة من ذاكرة التخزين المؤقت ، وإذا كانت موجودة ، فسيتم استردادها مباشرة. إذا لم يكن موجودًا ، فأرسل استعلام SQL إلى قاعدة البيانات ، ثم قم بتخزين بيانات الاستعلام في ذاكرة التخزين المؤقت وإعادتها إلى البرنامج.
سيكون هذا مشكلة:
إذا قام البرنامج بتغيير بيانات قاعدة البيانات التي سيتم فحصها خلال الاستعلام الأول والثاني ، فسوف يتسبب ذلك في خطأ البيانات ، وهذا هو ،
القراءة القذرة هي في الواقع MyBatis سوف يقوم بتطهير ذاكرة التخزين المؤقت بعد تنفيذ طريقة الالتزام () في SQLSession. في المرة الثانية التي أذهب فيها للاستعلام ، سأظل أستفسر من قاعدة البيانات.
يمكنك أيضًا استدعاء طريقة ClearCache () يدويًا لـ SQLSession لمسح ذاكرة التخزين المؤقت
أمثلة صغيرة:
test public void testcachelever1 () يلقي الاستثناء {sqlsession session = factory.opensession () ؛ usermapper mapper = session.getMapper (usermapper.class) ؛ // الطلب الأول هو الاستعلام عن المستخدم باستخدام user user 1 ID = mapper.finduserbyid (1) ؛ System.out.println (user) ؛ // تغيير البيانات ، سيتم مسح ذاكرة التخزين المؤقت user.setUserName ("yyyy") ؛ mapper.updateuser (user) ؛ session.Commit () ؛ // سيبحث الاستعلام الثاني عن المستخدم user2 = mapper.finduserbyid (1) ؛ System.out.println (user2) ؛ session.close () ؛ }سؤال:
إذا تم إغلاق SQLSession ، فسيتم مسح ذاكرة التخزين المؤقت. كيف تستخدم ذاكرة التخزين المؤقت لتحسين الكفاءة؟
حسنًا ، يقدم المقال التالي ذاكرة التخزين المؤقت من المستوى 2 MyBatis.
ما سبق هو ذاكرة التخزين المؤقت من المستوى الأول من MyBatis التي قدمها المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!