java - 打开 session 查看并提交事务

标签 java oracle hibernate spring transactions

我正在使用 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

最佳答案

当使用@Transactional时(并且您有一个名为 transactionManager 的 bean,并且有 <tx:annotation-driven /> ),那么您不需要手动处理事务。

关于java - 打开 session 查看并提交事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4785522/

相关文章:

带条件的 JAVA 迭代器

java - 使用 swing 键盘选择列表框项目

java - 如何在java SE中获取接入点/路由器的本地IP

java - Java中的Switch语句会选择相反的情况

Oracle SQL sqlldr 不将纬度/经度导入为 float

java - Intellij IDEA Hibernate 控制台找不到 JDBC 驱动程序

java使用hibernate SQLQuery获取多个列

sql - 如何为一对多关系开发数据库模式?

java - Hibernate GROUP BY 对 Oracle 无效

java - 即使我指定了计数查询,也无法使用具有动态排序和/或分页的 native 查询