opensessioninview и совершить транзакцию - PullRequest
1 голос
/ 24 января 2011

Я использую 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

1 Ответ

2 голосов
/ 24 января 2011

При использовании @Transactional (и у вас есть компонент с именем transactionManager и <tx:annotation-driven />), вам не нужно обрабатывать транзакции вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...