IOC 컨테이너 외부에서 간단한 스프링 JDBC 트랜잭션을 수행하는 방법은 무엇입니까?
-
05-09-2019 - |
문제
내가 작업하고있는 프로젝트는 모든 보일러 플레이트 영광에서 직선 JDBC 데이터 액세스를 사용하며 트랜잭션을 사용하지 않습니다. 트랜잭션을 사용하고 데이터 액세스 방법이 작성되는 방식을 단순화하는 것이 중요합니다. 특히 현재 일부 변경이 이루어지면서 중요합니다. 이 프로젝트는 꽤 오랫동안 사용되어 왔으며 ORM 프레임 워크에 적합하지 않습니다. 또한 많은 싱글 톤 (ugh)을 사용하여 의존성 주입을 사용할 수있게하기 위해 그것을 풀어주는 것은 상당한 양의 일이 될 것이며, 우리가 지금 그렇게해야한다고 누군가에게 설득 할 수 있다고 생각하지 않습니다.
나는 특히 Spring JDBC의 인터페이스, 특히 그것을 통해 SimpleJdbcTemplate
. 내 질문은 모든 데이터 액세스 방법이나 스프링 IOC 컨테이너 또는 AOP를 사용하지 않고도이를 위해 간단한 (서플릿 요청 당) 트랜잭션을 활성화하는 방법에 관한 것입니다. 나는 내 자신의 아키텍처를 가지고 놀았는데 SimpleJdbcTemplate
요청의 맥락에서 호출이 이루어질 때 단일 요청-로컬 연결 및 거래를 사용할 수 있습니다 ( ServletRequestListener
a ThreadLocal
). 잘 작동하는 것 같지만 Spring JDBC와 같은 좋은 외부 라이브러리를 사용하는 것이 바람직하다고 생각합니다.
누구든지 이것에 대한 경험이 있습니까?
해결책
아마도 당신은 사용할 수 있습니다 트랜잭션 템플릿 그리고 TransactionCallback 설명대로 프로그래밍 방식 트랜잭션 관리?
다른 팁
Spring은 AOP 수업 작성에 대해 걱정하지 않고 선언적으로 거래를 처리합니다. JDK 5 이상 및 스프링 2.5를 사용하는 경우 더 나은 주석.
나는 서비스 당 거래에 동의하지 않을 것이다. 작업 단위에 대해 알고있는 앱의 일부인 서비스 계층이 있어야합니다. 컨트롤러는 거래를 처리하는 서비스를 호출합니다.