Java opensessioninview和commit事务
我正在使用Hibernate、Spring和JSF 为了防止LazyInitializationException,我使用Java opensessioninview和commit事务,java,oracle,hibernate,spring,transactions,Java,Oracle,Hibernate,Spring,Transactions,我正在使用Hibernate、Spring和JSF 为了防止LazyInitializationException,我使用 <bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor"> <property name="sessionFactory" ref="sessionFact
<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();
}
public Collection findAll(){
会话会话=getSessionFactory().getCurrentSession();
事务tx=会话.beginTransaction();
返回
session.createCriteria(persistentClass
).setResultTransformer(Criteria.DISTINCT\u ROOT\u实体
).list();
}
我这样调用这个方法:
@Transactional( readOnly = false, propagation = Propagation.SUPPORTS )
public Collection<MyData> getMyData() {
return (Collection<MyData>) myDAO.findAll();
}
@Transactional(readOnly=false,propagation=propagation.SUPPORTS)
公共集合getMyData(){
return(Collection)myDAO.findAll();
}
在本例中,我使用了Spring事务。我是否需要在transaction tx=session.beginTransaction()中启动事务;以及findAll方法中的tx.commit()?
当使用
@Transactional
时,我正在使用Oracle 10g(您有一个名为transactionManager的bean,并且有
),那么您就不需要手动处理事务了