java www Spring 3.1، Hibernate 4، SessionFactory




udemy spring (6)

أزال 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 .

https://code.i-harness.com

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

<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؛


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


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

من LocalSessionFactoryBean javadoc:

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


استخدم هذا التكوين

ملف تكوين السبات:

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

<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

بوم:

    <!-- CGLIB -->
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>${cglib-version}</version>
        <scope>runtime</scope>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${org.hibernate-version}</version>
        <!-- will come with Hibernate core -->
    </dependency>

    <!-- Spring -->
   <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>

نسيت أن تشمل الإصدارات ، وأنا أستخدم إصدار السبات: 4.1.2.Final والربيع الإصدار: 3.1.1.RELEASE ، هناك تحديث من السبات 4.1.3.Final ، لم تختبر ولكن أعتقد أنها ستعمل بشكل جيد.


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

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

org.springframework.orm.hibernate4.HibernateTransactionManager;

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

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


  • في حالة السبات 4.0 أو أعلى ، اعتبارًا من الإصدار 4.0 من Spring ، يجب عليك استخدامه
org.springframework.orm.hibernate4.LocalSessionFactoryBean

فمثلا:

<bean id="sessionFactory" 
      class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    ...
</bean>

راجع http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/hibernate4/LocalSessionFactoryBean.html

  • في حالة Hibernate 5.0 / 5.1 / 5.2 ، اعتبارًا من الإصدار 4.3 من الربيع ، يجب أن تستخدمها بدلاً من ذلك
org.springframework.orm.hibernate5.LocalSessionFactoryBean

(راجع http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/hibernate5/LocalSessionFactoryBean.html )





spring