트랜잭션 처리
- 작성자 :
- 강*진
- 작성일 :
- 2019-12-10 10:02:29
- 조회수 :
- 2,196
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
안녕하세요.
위와 같이 retrieve, select로 시작하는 method인경우 read-only를 true로 설정해주었습니다.
하지만 해당 method에서 CUD요청 시 정상적으로 처리가 되고 있습니다.
로그를 찍어보면 read-only설정은 정상적으로 처리된걸로 확인되는데 CUD처리가 되고 있어 문의 드립니다.
DMBS는 오라클12c이고, 아래는 설정사항입니다.
=> datasource
<bean id="dataSourceKp" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="${sys.jdbc.url}"/>
<property name="username" value="${sys.jdbc.username}"/>
<property name="password" value="${sys.jdbc.password}"/>
</bean>
=> transaction
<bean id="txManagerKp" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceKp"/>
</bean>
<tx:advice id="txAdviceKp" transaction-manager="txManagerKp">
<tx:attributes>
<tx:method name="retrieve*" read-only="true" />
<tx:method name="select*" read-only="true" />
<tx:method name="register*" rollback-for="Exception" propagation="REQUIRED"/>
<tx:method name="modify*" rollback-for="Exception" propagation="REQUIRED"/>
<tx:method name="delete*" rollback-for="Exception" propagation="REQUIRED"/>
<tx:method name="save*" rollback-for="Exception" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config proxy-target-class="true">
<aop:pointcut id="requiredTxKp" expression="execution(* kp..service.*Impl.*(..))" />
<aop:advisor advice-ref="txAdviceKp" pointcut-ref="requiredTxKp" />
</aop:config>
위와 같이 retrieve, select로 시작하는 method인경우 read-only를 true로 설정해주었습니다.
하지만 해당 method에서 CUD요청 시 정상적으로 처리가 되고 있습니다.
로그를 찍어보면 read-only설정은 정상적으로 처리된걸로 확인되는데 CUD처리가 되고 있어 문의 드립니다.
DMBS는 오라클12c이고, 아래는 설정사항입니다.
=> datasource
<bean id="dataSourceKp" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="${sys.jdbc.url}"/>
<property name="username" value="${sys.jdbc.username}"/>
<property name="password" value="${sys.jdbc.password}"/>
</bean>
=> transaction
<bean id="txManagerKp" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSourceKp"/>
</bean>
<tx:advice id="txAdviceKp" transaction-manager="txManagerKp">
<tx:attributes>
<tx:method name="retrieve*" read-only="true" />
<tx:method name="select*" read-only="true" />
<tx:method name="register*" rollback-for="Exception" propagation="REQUIRED"/>
<tx:method name="modify*" rollback-for="Exception" propagation="REQUIRED"/>
<tx:method name="delete*" rollback-for="Exception" propagation="REQUIRED"/>
<tx:method name="save*" rollback-for="Exception" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config proxy-target-class="true">
<aop:pointcut id="requiredTxKp" expression="execution(* kp..service.*Impl.*(..))" />
<aop:advisor advice-ref="txAdviceKp" pointcut-ref="requiredTxKp" />
</aop:config>
A
안녕하세요.
표준프레임워크센터 입니다.
read-only=true 속성은
찾아보니 읽기전용에 대한 힌트를 주는것으로 나와 있습니다.
JDBC드라이버에 따라서 다를수도 있고
DBMS구성에 따라서도 실제 내부적으로
쓰기가 허용될수 있는듯 합니다.
Oracle의 경우 사용 DBMS이므로
기술지원을 받아보시는 것도 방법이 될듯 합니다.
감사합니다.
표준프레임워크센터 입니다.
read-only=true 속성은
찾아보니 읽기전용에 대한 힌트를 주는것으로 나와 있습니다.
JDBC드라이버에 따라서 다를수도 있고
DBMS구성에 따라서도 실제 내부적으로
쓰기가 허용될수 있는듯 합니다.
Oracle의 경우 사용 DBMS이므로
기술지원을 받아보시는 것도 방법이 될듯 합니다.
감사합니다.