java - www - udemy spring




Spring 3.1، Hibernate 4، SessionFactory (4)

كان هذا العمل:

<bean id="sessionFactory"  
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
...

لكن الترقية إلى الإصدارات المذكورة أعلاه يكسرها. ما هي الطريقة الصحيحة لإنشاء حبة SessionFactory مع Spring 3.1.Release و Hibernate 4.0.0.FINAL ؟

الخطأ في النشر هو:

الاستثناء المتداخل java.lang.NoClassDefFoundError: Lorg / hibernate / cache / CacheProvider؛


تصحيح
لقد أضفت إجابتي الخاصة التي أصلحتها لي.


أزال Hibernate 4 الواجهات CacheProvider ذات الصلة CacheProvider لصالح واجهة التخزين المؤقت ذات الصلة RegionFactory إصدارها مسبقًا. يمكنك العثور على ملخص حزمة الإصدار 4 من ذاكرة التخزين المؤقت here ، ملخص حزمة الإصدار 3.2 من ذاكرة التخزين المؤقت here (فقط قبل RegionFactory واجهة RegionFactory ) وملخص حزمة ذاكرة التخزين المؤقت الإصدار 3.3 here (عندما تم إصدار RegionFactory لأول مرة).

بخلاف JavaDoc ، قد تجد الوثائق التالية مفيدة:

ومع ذلك ، بناءً على dependencies فصل الربيع 3.1 ، لا يتطلب Spring 3.1 السبات 4 (تحت قسم Full Dependencies ، يكون JBoss Hibernate Object-Relational Mapper في الإصدار 3.3.2.GA ). إذا كنت تريد الترقية إلى Hibernate 4 ، فستحتاج إلى تحديث إعدادات ذاكرة التخزين المؤقت. خلاف ذلك ، حاول استخدام Hibernate 3.3.2 أو إصدار أحدث 3.X بدلاً من ذلك.

تحديث : ضع في اعتبارك ، وثائق Hibernate 4 في Spring 3.1 متفرقة حالياً. يحتوي Spring Framework Reference Documentation فقط على ما يلي للحصول على الدعم ل Hibernate 4.x :

See Javadoc for classes within the new org.springframework.orm.hibernate4 package

ربيع 3.1 يقدم LocalSessionFactoryBuilder ، الذي يمتد Configuration السبات.

يبدو أنك يجب أن تراقب بعض التغييرات الأخرى إذا كنت تريد استخدام Hibernate 4.

استكمال 2 : فقط لاحظت هذا السؤال هو تكرار وثيقة من استثناء NoClassDefFoundError ل CacheProvider .


أعتقد أنه يجب عليك استخدام org.springframework.orm.hibernate4.LocalSessionFactoryBean بدلاً من org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

من LocalSessionFactoryBean javadoc:

ملاحظة: يتطلب هذا البديل من LocalSessionFactoryBean Hibernate 4.0 أو أعلى. يشبه الدور في نفس الفئة المسماة في الحزمة orm.hibernate3. ومع ذلك ، من الناحية العملية ، فهي أقرب إلى AnnotationSessionFactoryBean حيث أن الغرض الأساسي منها هو تمهيد الدورة من فحص التعليقات التوضيحية.


اضطررت لتغيير بعض الأشياء ، هنا نذهب:

في إعداد مدير العمليات ، تم تغيير الإعداد 3 -> 4:

org.springframework.orm.hibernate4.HibernateTransactionManager;

وجلستي لهذا المنتج (بفضلtoxin):

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"





spring