Я начинаю использовать Hibernate со Struts 2 для относительно простого веб-проекта.Из соображений производительности я знаю, что рекомендуется минимизировать время создания объектов Hibernate Configuration и SessionFactory.
Может ли кто-нибудь предоставить какие-либо сведения о том, является ли это хорошим способом сделать это или есть более подходящие подходы?Я основываю этот код на примере , который я нашел здесь .
. Подход состоит в том, чтобы создать SessionFactory в методе contextInitialized ServletContextListener и сохранить его в ServletContext.
Я заметил, что пример, кажется, никогда не закрывает SessionFactory, поэтому я добавил некоторый код в contextDestroyed.Было ли это необходимо?
Большое спасибо за любой вклад.Если вы можете предложить какие-нибудь лучшие примеры, я буду рад их рассмотреть.Я также видел некоторые ссылки на «Полный плагин спящего режима» для Struts.Это широко используемый и лучший подход?
FWIW, я использую Eclipse и развертываю в Tomcat с MySQL
public class HibernateListener implements ServletContextListener {
private Configuration config;
private SessionFactory sessionFactory;
private String path = "/hibernate.cfg.xml";
public static final String KEY_NAME = HibernateListener.class.getName();
@Override
public void contextDestroyed(ServletContextEvent arg0) {
if ( sessionFactory != null ) {
sessionFactory.close();
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
try {
URL url = HibernateListener.class.getResource(path);
config = new Configuration().configure(url);
sessionFactory = config.buildSessionFactory();
// save the Hibernate session factory into serlvet context
arg0.getServletContext().setAttribute(KEY_NAME, sessionFactory);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Вот что я добавил кweb.xml
<listener>
<listener-class>insert.package.name.here.HibernateListener</listener-class>
</listener>