الجلسة الموجودة في Hibernate هي ذاكرة التخزين المؤقت من المستوى الأول ، والتي يمكن فهمها على أنها ذاكرة التخزين المؤقت على مستوى العملية (شريط الخيوط) ، والتي توجد أثناء تشغيل العملية (شريط الخيوط).
يمكن فهم الجلسة ككائن يمكنه تشغيل قاعدة البيانات ، وهناك طرق لتشغيل قاعدة البيانات في هذا الكائن.
في Java ، يشير ذاكرة التخزين المؤقت عادة إلى مساحة الذاكرة التي تشغلها خصائص كائنات Java ، وعادة ما تكون بعض سمات نوع المجموعة. يتم تعريف سلسلة من مجموعات Java في SessionImpl SessionImpl من واجهة الجلسة ، وتشكل مجموعات Java هذه ذاكرة التخزين المؤقت للجلسة.
بشكل عام (فهمي للجلسة): الجلسة هي الوسيط (كائن) بين السبات و DB. هناك شيئان أو وظائف في الجلسة.
(1) طرق تشغيل قاعدة البيانات
(2) هناك بعض السمات (المجموعات ، إلخ) في الجلسة ، والتي تستخدم هذه السمات لتخزين لغة SQL المراد إرسالها إلى DB ، ذاكرة التخزين المؤقت للبيانات التي تم العثور عليها من DB ، إلخ.
ذاكرة التخزين المؤقت للجلسة
يتكون ذاكرة التخزين المؤقت للجلسة من سلسلة من مجموعات Java. عند إضافة كائن إلى ذاكرة التخزين المؤقت للجلسة ، تتم إضافة الإشارة إلى هذا الكائن إلى مجموعة Java. في المستقبل ، حتى إذا لم يعد المتغير المرجعي في التطبيق يشير إلى الكائن ، طالما لم يتم مسح ذاكرة التخزين المؤقت للجلسة ، فسيظل الكائن في دورة حياته.
دور ذاكرة التخزين المؤقت للجلسة:
1) تقليل تواتر الوصول إلى قاعدة البيانات.
2) تأكد من الحفاظ على الكائنات الموجودة في ذاكرة التخزين المؤقت في التزامن مع السجلات ذات الصلة في قاعدة البيانات.
حان الوقت لتنظيف ذاكرة التخزين المؤقت في الجلسة:
1) عند استدعاء طريقة الالتزام () للمعاملة ، تقوم طريقة الالتزام () أولاً بتنظيف ذاكرة التخزين المؤقت (شريطة أن flushmode.commit/auto) ، ثم تقدم المعاملات إلى قاعدة البيانات.
2) عندما يستدعي تطبيق جلسة الاكتتاب () أو تكرار () ، إذا كانت خصائص الكائن المستمر في تغيير ذاكرة التخزين المؤقت ، سيتم تنظيف ذاكرة التخزين المؤقت أولاً للتأكد من أن نتائج الاستعلام يمكن أن تعكس أحدث حالة للكائن الثابت.
3) عندما يعرض التطبيق طريقة Flush () للجلسة.
النقطة الزمنية التي يقوم فيها وضع تنظيف الجلسة بإجراء عملية التخزين المؤقت للتنظيف:
واجهة الجلسة
واجهة الجلسة هي الواجهة الأكثر أهمية التي توفرها Hibernate لتطبيقات معالجة قواعد البيانات. ويوفر الطرق الأساسية لتوفير وتحديث وحذف والاستعلام.
1.Save (): أضف كائنًا مؤقتًا إلى ذاكرة التخزين المؤقت ، ويصبح كائنًا ثابتًا
-> حدد مولد المفاتيح الأساسي المحدد في ملف التعيين لتعيين OID فريد للكائن الثابت
-> خطط لبيان إدراج لتجميع قيمة الخاصية الحالية لكائن المعلمة في عبارة insert ، لكن طريقة Save () لا تنفذ عبارة SQLinsert على الفور ، وسيتم تنفيذها فقط عندما تنظف الجلسة ذاكرة التخزين المؤقت.
-> إذا تم تعديل خصائص الكائن المستمر بعد طريقة Save () ، فستقوم الجلسة بتنفيذ عبارات SQLuPdate إضافية عند تنظيف ذاكرة التخزين المؤقت.
ملاحظة: يتم استخدام طريقة Save () لاستمرار كائن مؤقت!
إذا قمت بتمرير كائن ثابت إلى طريقة Save () ، فلن يتم تنفيذ أي عملية ، خطوات زائدة عن الحاجة
إذا تم تمرير كائن الحالة الحرة إلى طريقة SAVE () ، فستقوم الجلسة بمعالجتها ككائن مؤقت وإدراج سجل في قاعدة البيانات مرة أخرى ، والتي لا تلبي احتياجات العمل!
2. تحديث (): إعادة إضافة كائن العميل إلى ذاكرة التخزين المؤقت للجلسة وقم بتحويله إلى كائن ثابت.
---> جدولة عبارة تحديث ، والتي سيتم تنفيذها فقط عند تنظيف ذاكرة التخزين المؤقت ، وسيتم تجميع قيم السمة في كائن المعلمة في عبارة التحديث عند تنفيذها.
ملاحظة: تحديث () يحول كائن مجاني إلى كائن ثابت.
طالما يرتبط الكائن الحر بجلسة من خلال طريقة التحديث () ، ستقوم الجلسة بتنفيذ عبارة التحديث المخطط لها بواسطة طريقة التحديث عند تنظيف ذاكرة التخزين المؤقت.
3.SaveorUpDate (): يحتوي على كل من طرق Save () و update (). إذا كانت المعلمة التي تم تمريرها كائنًا مؤقتًا ، فاستدعاء طريقة حفظ. إذا كانت المعلمة كائنًا مجانيًا ، فاستدعاء طريقة التحديث (). إذا كانت المعلمة التي تم تمريرها كائنًا ثابتًا ، فأعود مباشرة.
4.Load ()/get (): سوف يقومون بتحميل كائن ثابت من قاعدة البيانات بناءً على OID المحددة. الفرق هو أنه عندما لا يكون هناك سجل يتوافق مع OID في قاعدة البيانات ، فإن طريقة LOAD () ستلقي استثناء ObjectNotFoundException ، وستُرجع طريقة GET () NULL.
5.delete (): يستخدم لحذف السجلات المقابلة لكائنات المعلمة من قاعدة البيانات. إذا كانت المعلمة التي تم تمريرها كائنًا ثابتًا ، فإن الجلسة تخطط لتنفيذ بيان حذف. إذا كانت المعلمة التي تم تمريرها كائنًا مجانيًا ، فابحث أولاً الكائن الحر المرتبط بالجلسة لجعله كائنًا ثابتًا ، ثم خطط لبيان حذف للتنفيذ عند تنظيف ذاكرة التخزين المؤقت.
6.EVICT (): امسح الكائن المستمر المحدد بواسطة المعلمة من ذاكرة التخزين المؤقت.
المناسبات المعمول بها: لا تريد أن تستمر الجلسة في تحديث قاعدة البيانات بشكل متزامن وفقًا لحالة الكائن.
في حالة تحديث الدُفعات أو حذف الدُفعات ، عند تحديث كائن أو حذفه ، يتم إصدار الذاكرة التي يشغلها الكائن في الوقت المناسب. بالطبع ، تعطي عمليات الدُفعات الأولوية لـ JDBC.
7.clear (): مسح جميع الكائنات الثابتة في ذاكرة التخزين المؤقت.
لخص
ما سبق هو فهم سريع للمحتوى الكامل للجلسة في السبات ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!