Я использую Hibernate, Spring и JSF.
Для предотвращения LazyInitializationException я использую
<bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
<property name="sessionFactory" ref="sessionFactory"/>
<property name="singleSession" value="true"/>
</bean>
В myDAO я определил метод:
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.Нужно ли запускать транзакцию в Transaction tx = session.beginTransaction(); and tx.commit()?
в методе findAll?
Я использую Oracle 10g