java - ما هو هذا spring.jpa.open-in-view=خاصية حقيقية في Spring Boot؟




spring-boot spring-data (2)

رأيت في وثائق "التمهيد الربيع" هذه الخاصية لتكوين JPA spring.jpa.open-in-view=true . بالمناسبة ، تم تعيينها على أنها صحيحة ، فهل هي القيمة الافتراضية؟

ماذا يعني حقا؟ لم أجد أي تفسير لهذا السلوك.

هل يجب أن يكون استخدام Hibernate EntityManagerFactory بدلاً من EntityManagerFactory بدلاً من ذلك؟ إذا كانت الإجابة بنعم ، كيف يمكنني EntityManagerFactory على EntityManagerFactory ؟

نقدر أي مساعدة.

شكر!


ستقوم هذه الخاصية بتسجيل OpenEntityManagerInViewInterceptor ، الذي يسجل EntityManager سلسلة EntityManager الحالية ، لذلك سيكون لديك نفس EntityManager حتى يتم الانتهاء من طلب الويب. لا علاقة له بإحدى SessionFactory السبات الخ.


لسوء الحظ ، يتم تمكين OSIV (الجلسة المفتوحة في العرض) افتراضيًا في Spring Boot ، وتعد OSIV فكرة سيئة حقًا من منظور الأداء وقابلية التوسع .

لذلك ، تأكد من وجود الإدخال التالي في ملف تكوين application.properties :

spring.jpa.open-in-view=false

سيؤدي هذا إلى تعطيل OSIV بحيث يمكنك التعامل مع LazyInitializationException بالطريقة الصحيحة .

بدءًا من الإصدار 2.0 ، يصدر Spring Boot تحذيرًا عند تمكين OSIV افتراضيًا ، حتى تتمكن من اكتشاف هذه المشكلة قبل وقت طويل من التأثير على نظام الإنتاج.





spring-data