transaction
- 작성자 :
- 양*일
- 작성일 :
- 2013-08-21 13:04:50
- 조회수 :
- 1,009
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
context-transaction.xml
<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="find*" read-only="true"/>
<tx:method name="createNoRBRole" no-rollback-for="NoRoleBackTx"/>
<tx:method name="createRBRole" rollback-for="RoleBackTx"/>
<tx:method name="create*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx"
expression="execution(* grc.rte.sample..impl.*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="requiredTx" />
</aop:config>
serviceImpl source
public void saveCommonCode(CommonCodeSearchVO commonCodeSearchVO
, List<CommonCodeVO> commonCodeList) throws Exception {
CommonCodeVO vo = new CommonCodeVO();
vo.setBranchCode(commonCodeSearchVO.getBranchCode());
vo.setCodePre(commonCodeSearchVO.getCodePre());
vo.setCodeDetail("");
vo.setCodeName(commonCodeSearchVO.getCodeName());
vo.setCodeInfo(commonCodeSearchVO.getCodeInfo());
vo.setBigo(commonCodeSearchVO.getBigo());
gcdManageDAO.updateCommonCode(vo);
if (commonCodeList.size() > 0){
for (int i = 0 ; i < commonCodeList.size() ; i++){
CommonCodeVO commonCodeVO = commonCodeList.get(i);
System.out.println("getCodeDetail===>" + commonCodeVO.getCodeDetail());
if (commonCodeVO.getCurd().equals("U")){
gcdManageDAO.updateCommonCode(commonCodeVO);
}else if (commonCodeVO.getCurd().equals("C")){
//commonCodeVO.setInsertManager(user.getId());
gcdManageDAO.insertCommonCode(commonCodeVO);
}else if (commonCodeVO.getCurd().equals("D")){
gcdManageDAO.deleteCommonCode(commonCodeVO);
}
}
}
}
insert 시 sql 오류를 발생시켜도 update 됩니다.
체크해야 할 곳이 또 있나요?
<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="find*" read-only="true"/>
<tx:method name="createNoRBRole" no-rollback-for="NoRoleBackTx"/>
<tx:method name="createRBRole" rollback-for="RoleBackTx"/>
<tx:method name="create*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx"
expression="execution(* grc.rte.sample..impl.*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice"
pointcut-ref="requiredTx" />
</aop:config>
serviceImpl source
public void saveCommonCode(CommonCodeSearchVO commonCodeSearchVO
, List<CommonCodeVO> commonCodeList) throws Exception {
CommonCodeVO vo = new CommonCodeVO();
vo.setBranchCode(commonCodeSearchVO.getBranchCode());
vo.setCodePre(commonCodeSearchVO.getCodePre());
vo.setCodeDetail("");
vo.setCodeName(commonCodeSearchVO.getCodeName());
vo.setCodeInfo(commonCodeSearchVO.getCodeInfo());
vo.setBigo(commonCodeSearchVO.getBigo());
gcdManageDAO.updateCommonCode(vo);
if (commonCodeList.size() > 0){
for (int i = 0 ; i < commonCodeList.size() ; i++){
CommonCodeVO commonCodeVO = commonCodeList.get(i);
System.out.println("getCodeDetail===>" + commonCodeVO.getCodeDetail());
if (commonCodeVO.getCurd().equals("U")){
gcdManageDAO.updateCommonCode(commonCodeVO);
}else if (commonCodeVO.getCurd().equals("C")){
//commonCodeVO.setInsertManager(user.getId());
gcdManageDAO.insertCommonCode(commonCodeVO);
}else if (commonCodeVO.getCurd().equals("D")){
gcdManageDAO.deleteCommonCode(commonCodeVO);
}
}
}
}
insert 시 sql 오류를 발생시켜도 update 됩니다.
체크해야 할 곳이 또 있나요?
A
안녕하세요 프레임워크 센터입니다.
지금 정의되어 있는 트랜잭션 설정은 세부적으로 정의를 할 때 사용하는 것이기 때문에 현 상황과는 맞지 않습니다. 일반적으로 모든 메서드에 대해 트랜잭션을 관리하기 위해서는 보통
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
이런 식으로 사용합니다.
위부분을 수정 후에 다시 시도해 보시기 바랍니다.
지금 정의되어 있는 트랜잭션 설정은 세부적으로 정의를 할 때 사용하는 것이기 때문에 현 상황과는 맞지 않습니다. 일반적으로 모든 메서드에 대해 트랜잭션을 관리하기 위해서는 보통
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
이런 식으로 사용합니다.
위부분을 수정 후에 다시 시도해 보시기 바랍니다.