2014-03-12 2 views
1

우리는 모든 CRUD 작업을 위해 DAO에서 HibernateTemplate을 사용합니다. 스프링 트랜잭션을 관리하기 때문에 내 질문은HibernateTemplate과 Spring @Transactional은 어떻게 함께 작동합니까?

, 우리는, 서비스에 봄 @Transactional을 사용하여, 나는 여러의 DAO를 업데이트 senario의 HibernateTemplate에없이 행동을 수행하는 방법. 의미는 무엇입니까 @Transactional을 사용할 때 HibernateTemplate은 다른 DAO에서 동일한 세션을 사용합니까?

@Transactional 
public boolean testService(SObject test)[ 

    dao1.save(test.getOne()); 
    dao2.save(test.gettwo()); 

} 


이는 DAO 클래스는 모습입니다 :

public class GenericHibernateDao<T, PK extends Serializable> extends HibernateDaoSupport 
. 
. 
. 
public PK save(T newInstance) { 
    return (PK) getHibernateTemplate().save(newInstance); 
} 

답변

2

HibernateTransactionManagerjavadoc 이것에 대해 매우 분명하다

이 트랜잭션 관리자는 하나를 사용하는 응용 프로그램에 적합합니다 트랜잭션 데이터 액세스를위한 Hibernate SessionFactory이지만 트랜잭션 내에서 직접적인 DataSource 액세스도 지원합니다 (즉, p 동일한 데이터 소스로 작업하는 JDBC 코드). 이것은 Hibernate에 접근하는 혼합 서비스와 평범한 JDBC를 사용하는 서비스들 (Hibernate를 인식하지 않고)을 허용한다! 애플리케이션 코드는 org.springframework.jdbc.datasource.DataSourceTransactionManager (즉, DataSourceUtils.getConnection 또는 TransactionAwareDataSourceProxy를 통과하는 경우)와 동일한 간단한 연결 조회 패턴을 고수해야합니다.

당신만큼 당신이 연결 프록시의 인식 도우미 클래스를 통해 연결에 액세스하는대로 괜찮아요 같은 DataSourceUtils (그리고 JdbcTemplate 사용하는 후드 뒤)