Я использую следующий подход для решения ленивой задачи инициализации в спящем режиме. Скажите, пожалуйста, будет ли это работать или нет. По каким-то причинам я должен выполнить свою транскрипцию на своем уровне сопротивления.hibernate ленивое решение. Это правильно?
public class CourseDAO {
Session session = null;
public CourseDAO() {
session = HibernateUtil.getSessionFactory().getCurrentSession();
}
public Course findByID(int cid) {
Course crc = null;
Transaction tx = null;
try {
tx = session.beginTransaction();
Query q = session.createQuery(
"from Course as course where course.cid = "+cid+" "
);
crc = (Course) q.uniqueResult();
//note that i am not commiting my transcation here.
//Because If i do that i will not be able to do lazy fetch
}
catch (HibernateException e) {
e.printStackTrace();
tx.rollback();
throw new DataAccessLayerException(e);
}
finally {
return crc;
}
}
}
и в фильтре я использую феллинг код
session = HibernateUtil.getSessionFactory().getCurrentSession();
if(session.isOpen())
session.getTransaction().commit();
этот подход не так ли? Может ли это иметь какие-либо проблемы.
http://community.jboss.org/wiki/OpenSessionInView – Bozho