2012-06-12 2 views
2

Я использую версию Hibernate 3 для своего приложения.Hibernate: где именно нам нужно закрыть SessionFactory Object

Просматривая учебники по Hibernate, я узнал, что SessionFactory должен быть создан только один раз для приложения. Итак, для этого я решил использовать статический блок внутри класса и статический метод, чтобы вернуть это, как показано.

public class SessionFactoryInitiliaztion { 
    static { 
     try { 
      sessionFactory = new Configuration().configure().buildSessionFactory(); 
     } catch (Exception x) { 
      x.printStackTrace(); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 
} 

Где именно мне нужно, чтобы закрыть этот sessionFactory объект, так что перепродажи памяти?

+0

Вы можете принять во внимание Весну. Также читайте http://stackoverflow.com/questions/8724259/spring-hibernate-session-lifecycle при управлении сессиями с помощью Spring и Hibernate. – JMelnik

+0

Наверное, пока приложение работает на выходе. Подробнее см. Http://stackoverflow.com/a/4544053/366964. –

+0

Спасибо, но я не использую Spring для этого приложения, его основаны на сервлетах, JSP и Hibernate и MYSQL. – Pawan

ответ

4

Я не могу думать ни о какой причине (небрежно), почему вы хотели бы закрыть фабрику сеансов, пока ваше приложение существует, поэтому я не буду слишком беспокоиться о возврате памяти. Я просто закрою его, когда ваше приложение отключится.

+1

Вы неправильно поняли мой вопрос, я хочу закрыть его, когда приложение существует, так что я могу сделать это внутри метода уничтожения сервлета или есть подходящее место для закрытия Hibernate sessionFactory Object ?? , – Pawan

+0

извините, да, вот где вы должны закрыть его, в destroy() –

+0

Большое спасибо. – Pawan

0

Это появляется ошибка, однако с «устаревшей» конфигурации SessionFactory закрывается правильно:

Configuration configuration = new Configuration().configure(); 
    sessionFactory = configuration.buildSessionFactory(); 
Смежные вопросы