NetBeans에서 최대 절전 모드를 사용 중입니다. NetBeans 용 Hibernate 플러그인과 함께 제공되는 최대 절전 모드 util
클래스를 사용하여 현재 세션을 가져옵니다.최대 절전 모드 세션 문제
this.session = HibernateUtil.getSessionFactory().getCurrentSession();
하지만 게으른하려고 할 때이 오류 다음 부여합니다 아무것도 가져 : 나는이 DAO를 사용하고
org.hibernate.LazyInitializationException: failed to lazily initialize a course.
그건 내가 내 현재의 세션을 얻기 위해 다음 코드를 사용하고있다. 하나는 Abstract DAO이고 두 번째는 AbstractDAO를 확장 한 CoutseDAO입니다.
public class CourseDAO extends AbstractDAO<Course>{
public CourseDAO()
{
super();
}
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();
tx.commit();
}
catch (HibernateException e)
{
e.printStackTrace();
tx.rollback();
throw new DataAccessLayerException(e);
}
finally
{
}
return crc;
}
public List<Course> findAll(){
List lst = null;
Transaction tx = null;
try {
tx = session.beginTransaction();
Query q = session.createQuery("from Course ");
lst = q.list();
tx.commit();
}
catch (HibernateException e)
{
e.printStackTrace();
tx.rollback();
throw new DataAccessLayerException(e);
}
finally
{
}
return (List<Course>)lst ;
}
}
세션을 검색하는 방법뿐만 아니라 DAO를로드하는 데 사용하는 전체 코드를 게시해야합니다. – Elie
이것은 Hibernate가 의도 한 작업을 수행하기 위해 DAO를 잘못 사용하는 것처럼 보입니다. 'createObject (T 객체)', Hibernate가 작업을 수행해야하는 쿼리를 작성하며, 트랜잭션 경계는 DAO 메소드 경계에서 끝납니다. 모든 것이 완전히 잘못되었으므로 절대적인 고비입니다. * 모든 DAO 항목을 제거하고 Hibernate를 직접 사용하십시오. –