【发布时间】:2011-01-24 18:16:45
【问题描述】:
我正在使用 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 事务。我需要在 findAll 方法中在Transaction tx = session.beginTransaction(); and tx.commit()? 中启动事务吗?
我正在使用 Oracle 10g
【问题讨论】:
标签: java oracle hibernate spring transactions