2009-11-01 7 views
3

안녕하세요 저는 Spring ibatis 및 mysql을 사용하여 웹 응용 프로그램을 작성하고 있습니다.Spring, iBatis, MySQL - 트랜잭션 관리 방법은 무엇입니까?

나는 mysql 저장 프로 시저를 사용할 것이고 나는 ibatis를 호출 할 것이다. 제 질문은 거래를 관리하는 방법에 관한 것입니다. 스토어드 프로 시저 내부 또는 스프링/ibatis 또는 둘 모두를 사용하여 트랜잭션을 관리해야합니까?

답변

1

Ibatis를 사용하고 procs를 매우 행복하게 저장했기 때문에이 접근법에서는 아무 것도 볼 수 없습니다.

Ibatis는 변경 데이터 procs에 매개 변수를 편리하게 전달하고 get-data procs '결과 세트를 적절하게 처리하는 데 적합합니다.

귀하의 procs가 그렇게 할 경우 Ibatis는 여러 결과 집합의 출력을 처리 할 수도 있습니다.

트랜잭션 측면에서 : 종속적입니다. 앱이 자동 커밋 모드에서 일반적으로 매우 행복하게 실행할 수 있지만 트랜잭션이 필요한 몇 가지 고유 procs가있는 경우 proc-managed가 작동 할 수 있습니다. 트랜잭션이 필요한 모든 것이 단일 "상위"proc에 의해 조정되도록 앱을 설계 할 수 있습니다. 그 말이 특히 인상적인 패턴은 아니지만 합리적인 범위에서 효과가있을 것입니다.

적절하지 않은 것으로 판단되는 경우 스프링 관리 트랜잭션은 1 일부터 구현하기에 좋은 선택이며 앱에서 정상적으로 성장할 가능성이 가장 높습니다.

최종적인 생각 - 응용 프로그램/스프링 트랜잭션 관리가있는 경우, 응용 프로그램 측에서 COMMIT 할 때까지 procs에 넣는 트랜잭션 처리에 상관없이 "내부"커밋은 " 제대로 "저지른 것입니다 (사용법은있을 수 있지만 여기에 들어가는 것 이상입니다).

편집 -이 글을 쓰면서 다른 DB가 COMMIT의 중첩을 다르게 처리한다는 것을 알게되었습니다. 특히 오라클은 중첩 여부에 관계없이 COMMIT을 COMMIT으로 처리하므로 App 관리 트랜잭션 내에서 커밋 된 procs가 올바르게 커밋됩니다.

1

왜 저장 프로 시저를 사용하고 있는지 알 수 없습니다. 자네가 있기 때문에 나는 바티스가 당신을 사는지 알지 못합니다.

이 응용 프로그램을 작성하는 경우 Spring과 iBatis 또는 Spring 및 저장 프로 시저 중 하나만 사용해야하지만 둘 다 사용하지는 않습니다.

저는 스프링을 사용하여 트랜잭션을 관리 했으므로 스토어드 프로 시저에 트랜잭션 로직을 넣지 않도록합니다.

관련 문제