2011-01-24 4 views
1

최대 절전 모드, 스프링 및 JSF를 사용하고 있습니다. LazyInitializationException이를 방지하기 위해 내가 myDAO에서오픈 트랜잭션을보고 트랜잭션을 커밋합니다.

<bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor"> 
     <property name="sessionFactory" ref="sessionFactory"/> 
     <property name="singleSession" value="true"/> 
</bean> 

을 사용하고

, 나는 방법 정의 :

public Collection<T> findAll() { 
     Session session = getSessionFactory().getCurrentSession(); 
     Transaction tx = session.beginTransaction(); 
     return 
      session.createCriteria(persistentClass 
        ).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY 
          ).list(); 
    } 

을 나는 방법과 같이 호출

@Transactional(readOnly = false, propagation = Propagation.SUPPORTS) 
    public Collection<MyData> getMyData() { 
     return (Collection<MyData>) myDAO.findAll(); 
    } 

에서을 이 경우 나는 Spring 트랜잭션을 사용했다. findAll 메소드에서 Transaction tx = session.beginTransaction(); and tx.commit()?에 트랜잭션을 시작해야합니까? @Transactional를 사용하여 (그리고 빈은 transactionManager라고, 그리고 <tx:annotation-driven />을) 때

그때 수동 트랜잭션을 처리 할 필요가 없습니다, 오라클 10g

답변

2

을 사용하고 있습니다.

관련 문제