2015-01-29 1 views
0

은 우리 회사의 마지막 개발자는봄 선언적인 트랜잭션 관리

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource"> 
     <ref bean="autoCreateHocDS"/> 
    </property> 
</bean> 

로 선언하지만 적용해야 어떤 클래스를 정의하기 위해 작성된 AOP 또는 @Transaction 같은 주석을 더는 없었다.

내 첫 번째 실행 클래스는 OCsAutoCreateHocJob이며 내부적으로 Service 및 DAO 클래스를 호출합니다.

여기에서 내 수준은 트랜잭션 관리가 클래스 체인에 적용될 수준인지 또는 트랜잭션 수준을 정의하지 않으면 적용되지 않을 것인가 또는 트랜잭션 관리가 모든 클래스에 적용됩니까?

답변

0

일반적으로 서비스 레이어는 @Transaction으로 주석 처리됩니다.이 레이어는 DAO 레이어를 여러 번 호출해야하는 비즈니스 로직 (계산, 데이터 조작 등)을 수행하는 레이어이기 때문에 일반적으로 주석을 지정합니다. 이렇게하면 단일 트랜잭션을 사용하여 많은 데이터베이스 메소드를 수행 할 수 있습니다.이 경우 무언가 이상이 발생할 경우를 대비하여 모든 데이터베이스 조치를 롤백 할 수 있습니다.

<!-- proxy-target-class is set to true to use transactional scope --> 
    <tx:annotation-driven proxy-target-class="true" transaction-manager="tomcatTransactionManager" /> 

<!-- Transaction Manager --> 
    <bean id="tomcatTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
     <property name="dataSource" ref="myDataSource" /> 
    </bean> 
+0

예. 내가 알기는하지만 서비스 레이어에서 및 @Trasanction을 선언하지 않으면 어떻게 작동할까요? – user416120

+0

구성 파일에서 구성 파일에 tomcatTransactionManager bean 만 보입니다. 그래서 그 시나리오에서 어떻게 작동할까요? – user416120