Это хороший подход для управления спящим режимом? - PullRequest
1 голос
/ 02 февраля 2011


Я ищу хороший способ управления сеансом гибернации через веб-приложение.Моя проблема в том, что я не хочу разрешать доступ к сеансу на уровне представления или API.поэтому я построил следующий метод в моем абстрактном классе BaseDao.метод метод

protected static Session getSession() {
    if(!session.isOpen()){
        session = sessionFactory.openSession();
    }else{
        session.clear();
    }
    return session;
}

использование:

public IHibernateBean save(IHibernateBean bean) {
    Transaction t = session.beginTransaction();
    getSession().saveOrUpdate(bean);
    t.commit();
    return bean;
}

public IHibernateBean getByPK(Class<?> class1 , Long pk) {
    IHibernateBean hibernateBean = (IHibernateBean) getSession().get( class1 , pk );
    return hibernateBean;
}

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Вы можете использовать контекстный сеанс, полученный с помощью SessionFactory.getCurrentSession(), см. 2.3. Контекстные сеансы .

Также см. Универсальные объекты доступа к данным для примера безопасной реализации DAO.

0 голосов
/ 02 февраля 2011

Я бы повторил ответ Аксавта.В качестве дополнительной информации, если вы используете контейнер с поддержкой Java EE (например, JBoss AS), используйте управляемый им EntityManager.Это особенно легко в Java EE 6, с CDI.

...