كيف يمكنني الحصول على قيمة خاصية jdbc.batch_size في وقت التشغيل لتطبيق ويب باستخدام Spring MVC وHbernate؟

StackOverflow https://stackoverflow.com/questions/105998

  •  01-07-2019
  •  | 
  •  

سؤال

وفقًا لما وجدته حتى الآن، يمكنني استخدام الكود التالي:

    LocalSessionFactoryBean sessionFactory = (LocalSessionFactoryBean)super.getApplicationContext().getBean("&sessionFactory");
    System.out.println(sessionFactory.getConfiguration().buildSettings().getJdbcBatchSize());

ولكن بعد ذلك أحصل على استثناء السبات:

org.hibernate.HibernateException:لم يتم العثور على مصدر بيانات محلي للتكوين - يجب تعيين خاصية مصدر البيانات على alcalsessionfactorybean

هل يمكن لأحد أن يلقي بعض الضوء؟

هل كانت مفيدة؟

المحلول

جرب ما يلي (لا يمكنني اختباره لأنني لا أستخدم Spring):

System.out.println(sessionFactory.getConfiguration().getProperty("hibernate.jdbc.batch_size"))

نصائح أخرى

في إصدارات Hibernate التي قمت بفحصها، لا تعد getConfiguration طريقة عامة لـ SessionFactory.في بعض الحالات اليائسة، قمت بإدراج Session أو SessionFactory في التنفيذ الأساسي الخاص به للحصول على بعض القيم التي لم تكن متاحة للعامة.في هذه الحالة سيكون ذلك:

((SessionFactoryImplementor)sessionFactory).getSettings().getJdbcBatchSize()

بالطبع، هذا أمر خطير لأنه قد ينكسر إذا قاموا بتغيير التنفيذ.عادةً ما أفعل ذلك فقط من أجل التحسينات التي يمكنني العيش بدونها، ثم أقوم بتغليف كل شيء في كتلة حاول/قبض على Throwable فقط للتأكد من أنها لن تؤذي أي شيء إذا فشلت.قد تكون الفكرة الأفضل هي تعيين القيمة بنفسك عند تهيئة وضع السبات حتى تعرف بالفعل ما هي عليه من البداية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top