Transaction 관련 재문의 드립니다.
- 작성자 :
- 정*욱
- 작성일 :
- 2014-08-20 09:46:06
- 조회수 :
- 598
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
안녕하세요. 하단 "Transaction 관련 문의 드립니다." 글 작성한 사람입니다.
제가 테스트를 하다 오류 코드를 잘못 적어놨네요. 발생 코드는 ORA-02291 입니다.
ServiceImpl 의 한 function 내에서 순차적으로 부모-자식 순으로 동일한 DAO를 호출해서 Insert 하고 있으며,
dataSource 에서 defaultAutoCommit 을 true 로 변경하면 오류 없이 정상적으로 입력되지만
임의로 SqlException 을 발생시 롤백이 되지 않습니다.
설정 내용은 아래와 같습니다. 문제 해결에 대한 조언을 다시 부탁드립니다. 감사합니다.
[dataSource] -------------------------------------------------------------------------------------------------------------
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@IP:SID"/>
<property name="username" value="NAME"/>
<property name="password" value="PASSWORD"/>
<property name="defaultAutoCommit" value="false"/>
</bean>
[transaction] -------------------------------------------------------------------------------------------------------------
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx" expression="execution(* egovframework..*impl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="requiredTx" />
</aop:config>
제가 테스트를 하다 오류 코드를 잘못 적어놨네요. 발생 코드는 ORA-02291 입니다.
ServiceImpl 의 한 function 내에서 순차적으로 부모-자식 순으로 동일한 DAO를 호출해서 Insert 하고 있으며,
dataSource 에서 defaultAutoCommit 을 true 로 변경하면 오류 없이 정상적으로 입력되지만
임의로 SqlException 을 발생시 롤백이 되지 않습니다.
설정 내용은 아래와 같습니다. 문제 해결에 대한 조언을 다시 부탁드립니다. 감사합니다.
[dataSource] -------------------------------------------------------------------------------------------------------------
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@IP:SID"/>
<property name="username" value="NAME"/>
<property name="password" value="PASSWORD"/>
<property name="defaultAutoCommit" value="false"/>
</bean>
[transaction] -------------------------------------------------------------------------------------------------------------
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx" expression="execution(* egovframework..*impl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="requiredTx" />
</aop:config>
A
안녕하세요. 정재욱님.
설정하신 transaction 정보로는 정상적으로 처리되는 것이 맞습니다.
추가적으로 현재 설정 상에 transaction 설정을 제외시켜보시고 테스트 확인 부탁드립니다.
아울러, trigger 등이 존재하거나, 부모 Key 값에 대한 처리 방식 등의 transaction 상의 문제가 아닌 다른 부분 상의 문제 가능성도 파악 부탁드립니다.
그럼, 즐거운 하루되십시오.
감사합니다.
설정하신 transaction 정보로는 정상적으로 처리되는 것이 맞습니다.
추가적으로 현재 설정 상에 transaction 설정을 제외시켜보시고 테스트 확인 부탁드립니다.
아울러, trigger 등이 존재하거나, 부모 Key 값에 대한 처리 방식 등의 transaction 상의 문제가 아닌 다른 부분 상의 문제 가능성도 파악 부탁드립니다.
그럼, 즐거운 하루되십시오.
감사합니다.