Transaction 에서 ReadOnly 프로퍼티에 대해 여쭙겟습니다...

1,075 views
Skip to first unread message

야구쟁이

unread,
Feb 16, 2011, 12:35:31 AM2/16/11
to Korea Spring User Group
AOP로 트랜젝선 어드바이스를 주거나 어노테이션을 이용할때 readOnly=true로 해놓고 해당메소드에서 수정작업을 해도
익셉션이 일어나지 않습니다 이에 관해서 검색을 해보았는데

http://forum.springframework.org/showthread.php?t=46376#7

데이터베이스에게 힌트를 주는것이고 직접적으로 수정을 막지는 못한다고 되어있습니다...

하지만 분면 토비의 스프링에서는 된다고 해놓았습니다;; 이걸 어떻게 받아들어야 할까요 고수님들의 가르침 부탁드립니다...

참고로 디비는 오라클쓰고 있습니다

야구쟁이

unread,
Feb 16, 2011, 12:35:30 AM2/16/11
to Korea Spring User Group

Sungchul Park

unread,
Feb 16, 2011, 1:03:01 AM2/16/11
to ks...@googlegroups.com
얼마 전에 토론한 내용과 같은 내용 같네요.

http://groups.google.com/group/ksug/browse_thread/thread/b552d15b1f11fc1e/335b953e0bff2288?#335b953e0bff2288

결론을 말하면 저 글에 있는 말이 사실입니다.
정확히는 데이터베이스에게 힌트를 주는 게 아니고 JDBC 드라이버에 힌트를
주는 거죠. 스프링은 트랜잭션이 readonly로 설정이 되면 Connection의
setReadOnly() 메서드를 true값으로 호출하는데 벤더의 JDBC 드라이버 마다
Connection 인터페이스를 구현하면서 readonly 상태를 무시하기도 하고 예외
를 던지기도 하는 것 같습니다. 오라클은 무시하고요.

결국 readonly일 때 오류를 내는 책임은 JDBC 드라이버에게 있는데 오라클 드
라이버가 이 처리를 하지 않는 거죠.

야구쟁이

unread,
Feb 16, 2011, 1:11:10 AM2/16/11
to Korea Spring User Group
감사합니다 큰 도움이 되었습니다... 그러면 오라클를 사용할때는 readonly 속성을 이용할수 없는건가요???

Sungchul Park

unread,
Feb 16, 2011, 1:29:51 AM2/16/11
to ks...@googlegroups.com
readonly로 설정하면 무조건 커밋 되는 거죠. ^^

갱신 되는 걸 막지는 못하지만 클래스 수준에서 기본 트랜젝션 의미론을 설정
하거나 메소드 단위로 예외를 설정할 때는 여전히 유용하다고 생각합니다. 그
리고 readonly를 지원하는 jdbc 드라이버가 생길지도 모를 일이고요. ^^

야구쟁이

unread,
Feb 16, 2011, 1:41:54 AM2/16/11
to Korea Spring User Group
아... 감사합니다 ^^ 많이 배웟습니다~
Reply all
Reply to author
Forward
0 new messages