¿Cómo obtengo el valor de la propiedad jdbc.batch_size en tiempo de ejecución para una aplicación web que utiliza Spring MVC e Hibernate?

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

  •  01-07-2019
  •  | 
  •  

Pregunta

Según lo que he encontrado hasta ahora, puedo usar el siguiente código:

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

pero luego aparece una excepción de hibernación:

org.hibernate.HibernateException:No se encuentra el plato de datos local para la configuración: la propiedad de la fuente de datos debe establecerse en LocalsessionFactoryBean

¿Alguien puede arrojar algo de luz?

¿Fue útil?

Solución

Pruebe lo siguiente (no puedo probarlo porque no uso Spring):

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

Otros consejos

En las versiones de Hibernate que he comprobado, getConfiguration no es un método público de SessionFactory.En algunos casos desesperados, incorporé una Session o SessionFactory a su implementación subyacente para obtener algunos valores que no estaban disponibles públicamente.En este caso sería:

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

Por supuesto, eso es peligroso porque podría romperse si cambian la implementación.Por lo general, solo hago esto para optimizaciones sin las que puedo vivir y luego envuelvo todo en un bloque try/catch Throwable solo para asegurarme de que no dañará nada si falla.Una mejor idea podría ser establecer el valor usted mismo cuando inicialice Hibernate para saber cuál es desde el principio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top