البحث الرئيسي في هذه المقالة هو
مفهوم الكسول : فقط تحميل كائن عند استخدامه بالفعل.
يمكن استخدام استراتيجية Hibernate البطيئة في:
1. في علامة <Slass> ، يمكن أخذ القيمة: صواب/خطأ.
2. في علامة <Property> ، يمكن أخذ القيمة: صحيحة/خاطئة ، ويكون أداة تحسين الفئة مطلوبة لتعديل رمز Bytecode (هذا لا معنى له).
3. على العلامات <stip> و <list> ، يمكن أخذ القيم: صواب/خطأ/إضافي.
4. على علامات الارتباط أحادي الطرف من <العديد إلى واحد> و <من فردي> ، يمكنك الحصول على القيمة: false/proxy/nophy
دعونا نلقي نظرة على الكسول على علامة الفصل:
user.java:
مستخدم الفئة العامة {/ * id */private int id ؛/ * اسم المستخدم */اسم السلسلة الخاصuser.hbm.xml:
<؟ package = "com.lixue.bean"> <!-يمثل اسم عقدة الفئة اسم الفئة للكيان ، ويمثل الجدول اسم الكيان المعين إلى الجدول في قاعدة البيانات-> <class name = "user" table = "t_user" lazy = "true" name = "password" /> <property name = "createTime" /> </slass> </ hibernate mapping>
طريقة الاختبار:
public void testload1 () {/*get user ، يدعم تحميل نفسه التحميل كسول (علامة الفئة كسول صالحة للخصائص العادية)*/مستخدم المستخدم = (المستخدم) hibernateutils.getsessession (). تحميل (user.class ، 1) ؛ user.getID ()) ؛/* ستصدر SQL ، لأن السمات ضرورية حقًا في هذا الوقت ، سيتم إصدار بيان SQL ، وسيجد البيان الصادر جميع السمات ، ولن تصدر السمات اللاحقة بيانات*/system.out.println ("user.name =" + user.getName ()) ؛ name)*/system.out.println ("user.password =" + user.getPassword ()) ؛/*لن تصدر SQL (تم العثور عليه عند التحقق من الاسم)*/system.out.println ("user.createTime =" + user.getCreateTime ()) ؛} جرب نقطة توقف عند User user = (User) HibernateUtils.getSession().load(User.class, 1); للاختبار!
سيظهر الكائن في مستخدم الكائن-> المعالج ---> العقدة الهدف ، كما هو موضح في الشكل:
1. في البداية ، الهدف فارغ. عند تنفيذ user.getId() ، لا يزال فارغًا ، لأن المعرف محدد بالفعل عند الاستعلام ، لذلك لا معنى له في هذا الوقت.
2. عند تنفيذ user.getName() ، يتم إصدار بيان ، كما هو موضح في الشكل:
من الشكل ، يمكننا أن نرى أنه عند الاستعلام عن الهوية ، لم يتم إصدار أي بيان. كما ذكرنا للتو ، عندما نستفسر عن سمة الاسم ، فإننا نصدر بيانًا ، وتتمثل وظيفة هذا البيان في الاستعلام عن جميع السمات.
3. عند تنفيذ user.getPassword() و user.getCreateTime() ، لن يتم إصدار البيان بعد الآن لأن قيمة السمة قد تم الاستعلام عنها من قبل.
ملاحظة: يدعم Lazy on the <Slass> فقط السمات العادية ولن تؤثر على تحميل المجموعات في الفصل.
ما سبق هو كل شيء عن كسول على <Slass> علامة التحميل كسول السبات ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!