2009-02-17 4 views
5

제가 진행중인 프로젝트는 JDBC 데이터 액세스를 모든 보일러 플레이트 영광으로 사용하며 트랜잭션을 사용하지 않습니다. 트랜잭션을 사용하고 데이터 액세스 방법이 쓰여지는 방식을 단순화하는 것이 중요하다고 생각합니다. 특히 현재 일부 변경이 이루어져야합니다. 이 프로젝트는 오랫동안 사용되어 왔으며 ORM 프레임 워크에 적합하지 않습니다. 그것은 또한 많은 싱글 톤 (Uugh)을 사용하고 의존성 주입을 사용할 수있게하기 위해 엉킴을 제거하면 상당한 양의 작업이 될 것이고 나는 지금 우리가 그렇게해야한다는 것을 누군가에게 납득시킬 수 있다고 생각하지 않는다.IoC 컨테이너 외부에서 간단한 Spring JDBC 트랜잭션을 수행하는 방법은 무엇입니까?

나는 Spring JDBC의 인터페이스가 특히 SimpleJdbcTemplate 인 인터페이스를 좋아한다. 내 질문은 모든 데이터 액세스 방법에서 프로그래밍 방식으로 설정하거나 Spring IoC 컨테이너 또는 AOP를 사용하지 않고도 간단한 (서블릿 요청 당) 트랜잭션을 활성화하는 방법에 관한 것입니다. 나는 자신의 아키텍처로 끝내고 SimpleJdbcTemplate과 비슷한 인터페이스로 끝내었고 요청에 대한 호출이 요청의 컨텍스트에서 이루어질 때 단일 요청 - 로컬 연결과 트랜잭션을 사용할 수 있습니다 (ServletRequestListenerThreadLocal 통해).). 그것은 잘 작동하는 것,하지만 나는 봄 JDBC와 같은 좋은 외부 라이브러리를 사용하는 것이 바람직하다고 생각합니다.

누구나이 경험이 있습니까?

답변

5

Programmatic Transaction Management에 설명 된대로 TransactionTemplateTransactionCallback을 사용할 수 있습니까?

+0

JdbcTemplate에 대한 모든 호출에 가능한 경우 요청 로컬 트랜잭션을 사용하는 대신 프로그래밍 방식으로 TransactionTemplate을 사용하여 호출을 래핑해야하므로 생각했던 방식대로 작동하지 않습니다. 그것은 잘 작동합니다. – ColinD

0

스프링은 AOP 클래스를 작성하는 것에 대해 걱정할 필요없이 선언적으로 트랜잭션을 처리합니다. JDK 5 이상 및 Spring 2.5를 사용하는 경우 annotations을 사용하는 것이 더 좋습니다.

서블릿 당 트랜잭션에 동의하지 않습니다. 작업 단위에 대해 알고있는 앱의 일부인 서비스 계층이 있어야합니다. 컨트롤러는 트랜잭션을 처리하는 서비스를 호출합니다.

+0

질문에서 응용 프로그램이 현재 Spring 컨테이너에 없으며 쉽게 이동할 수 없다고 언급했습니다. 내가 할 수 있으면 그렇게 선언적 트랜잭션을 사용하고 싶습니다. – ColinD

관련 문제