الجلسة: هي جلسة بين التطبيق وقاعدة البيانات ، مركز تشغيل الإسبات وأساس عمليات طبقة الثبات. ترتبط دورة حياة الكائنات/إدارة المعاملات/الوصول إلى قاعدة البيانات ارتباطًا وثيقًا بالجلسة.
تم تصميم كائن الجلسة من خلال SessionFactory. فيما يلي مثال لتقديم طريقتين للحصول على جلسات من قبل السبات.
السجلات هي مصدر قلق شائع للغاية في البرمجة. عندما يعمل المستخدمون على قواعد البيانات ، يحتاجون إلى تسجيل هذه السلسلة من العمليات لتتبع ديناميات قاعدة البيانات. لذلك عندما يقوم المستخدم بإدخال سجل في قاعدة البيانات ، يتعين عليهم تسجيل سجل في ملف السجل. يجب تنفيذ سلسلة عمليات المستخدم في جلسة ، وإلا فإن هذا سيصبح موضوعين. لا يوجد ضمان للمزامنة. انظر إلى الكود التالي
أدوات جلسة إدارة Hibernateutil
package com.bjpowernode.usermgr.Util ؛ استيراد org.hibernate.session ؛ // hibernate3 استيراد org.hibernate.sessionfactory ؛ استيراد org.hibernate.cfg.configuration ؛ فئة public hibernateutils cfg = configuration () الجلسة) {if (الجلسة! = null) {if (session.isopen ()) {session.close () ؛}}} sessionfactory getSessionFactory () {factory ؛}}}طبقة منطق أعمال المستخدم
package com.bjpowernode.usermgr.manager ؛ استيراد java.util.date ؛ استيراد org.hibernate.session ؛ استيراد com.bjpowernode.usermgr.domain.log UserManager {/** * كلا من إضافة المستخدمين وإضافة سجلات تستخدم نفس الجلسة ، لذلك * عند فشل إضافة المستخدمين ، ستفشل السجلات أيضًا. تراجع المعاملات* يضيف المستخدم سجلات النجاح وسيضيف أيضًا النجاح*/public void adduser (مستخدم المستخدم) {جلسة الجلسة = null ؛ حاول {// الحصول على جلسة سلسلة الموضوع الحالية = hibernateutils.getSessionSessionFactory () log ") ؛ log.settime (date date ()) ؛ log.setDetail (" xxx ") ؛ logManager logManager = new logmanagerimpl () ؛ // حفظ سجلات logManager.Addlog (log) ؛ session.getTransaction (). ه) {فئة تنفيذ السجل:
حزمة com.bjpowernode.usermgr.manager ؛ استيراد org.hibernate.session ؛ استيراد com.bjpowernode.usermgr.domain hibernateutils.getSessionFactory (). getCurrentsession (). حفظ (سجل) ؛}}
فئة الاختبار
package com.bjpowernode.usermgr.manager ؛ import junit.framework.testcase ؛ استيراد com.bjpowernode.usermgr.domain.user ؛ الطبقة العامة usermanagerimpltest يمتد testcase {new userduser () user.setName ("Zhang San") ؛ usermanager.adduser (المستخدم) ؛ }يلاحظ:
1. ما هو الفرق بين Opensession و GetCurrentsession؟
*يجب إغلاق Opensession ، وسيتم إغلاق التيارات تلقائيًا بعد اكتمال المعاملة.
*لا يرتبط Opensession بالخيط الحالي ، ويرتبط التيارات بالموضوع الحالي
2. إذا كنت تستخدم التيار ، فأنت بحاجة إلى تكوينه في ملف hibernate.cfg.xml:
*إذا كانت معاملة محلية (معاملة JDBC)
<PreferenceName = "hibernate.current_session_context_class"> مؤشر ترابط </property>
*إذا كانت معاملة عالمية (معاملة JTA)
<PrepertyName = "hibernate.current_session_context_class"> jta </property>
المعاملات العالمية: المعاملات المدارة والتنسيق من قبل المستكشف التي يمكن أن تمتد قواعد وعمليات بيانات متعددة. يستخدم مدير الموارد عمومًا بروتوكول تقديم XA ثنائي المراحل للتفاعل مع "نظام معلومات المؤسسة" (EIS) أو قاعدة البيانات.
المعاملات المحلية: المعاملات المحلية إلى EIS أو قاعدة بيانات واحدة وتقتصر على عملية واحدة. المعاملات المحلية لا تتضمن مصادر بيانات متعددة.
لخص
ما سبق هو المحتوى الكامل لهذه المقالة حول مثالين من الكود للحصول على جلسة في السبات. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الإشارة إلى:
تحليل مثيل إضافة وحذف ومراجعة والبحث من خلال الجلسة
تعرف بسرعة على الجلسة في السبات
يستخدم Hibernate HBM.XML لتكوين تحليل علاقة التعيين
إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!