【问题标题】:opensessioninview and commit transactionopensessioninview 并提交事务
【发布时间】: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


    【解决方案1】:

    当使用@Transactional(并且你有一个名为transactionManager的bean,并且有&lt;tx:annotation-driven /&gt;),那么你就不需要手动处理事务了。

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 2015-10-25
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      相关资源
      最近更新 更多