2010-06-10 7 views
3

우리는 DB에 액세스하기 위해 JdbcTemplate을 사용하려고합니다. 그러나 각 클래스에서 사용할 수있는 많은 DB 연결이 있으므로 jdbcTemplate을 주입하는 것이 atm 옵션이 아닙니다. 따라서 우리가 할 경우독립 실행 형 JdcbTemplate 사용

jdbcTemplate = new JdbcTemplate(dataSource); 

트랜잭션 정책은 무엇입니까? 자동 커밋은 DB에서 해제됩니다.

답변

2

javax.sql.DataSource 개체가 자동 커밋을 사용하도록 설정하거나 자동 커밋을 사용하지 않도록 설정하고 트랜잭션 논리를 프로그래밍 방식으로 쓸 수 있습니다.

java.sql.Connectionjavax.sql.DataSource 클래스에는 모두 자동 커밋 사용/사용 안 함 방법이 있습니다.

의존성 삽입과 Spring과 관련하여 저장소에 데이터 소스 개체를 삽입 할 수 있습니다. 각 저장소가 org.springframework.jdbc.core.support.JdbcDaoSupport 클래스를 확장하도록하면 파생 된 getJdbcTemplate() 메소드로 JdbcTemplate 객체를 사용할 수 있습니다.

또한 Spring이 트랜잭션 처리를 처리하도록 할 수 있습니다. XA 트랜잭션 관리자가 없으면 각 데이터 소스마다 하나의 트랜잭션 관리자가 필요합니다. 많은 트랜잭션 관리자의 경우 @Transactional 주석을 사용한 선언적 트랜잭션 지원은 불가능합니다. 그러나 트랜잭션 관리자를 서비스 클래스에 삽입 할 수는 있습니다. 이 내용은 참조 설명서 here에 설명되어 있습니다.

+0

그래서 JdbcTemplate은 아무 것도 지정하지 않으면 모든 업데이트 후에 커밋 할 것입니다. – Flyhard

+0

그것은 내가 사용했던 모든'DataSource'에 대한 기본 동작입니다. 따라서 JdbcTemplate.update (..)가 커밋하지 않으면'DataSource' 설정을 확인해야합니다. – Espen

+0

javax.sql.DataSource에는 자동 커밋에 대한 언급이 없습니다. –

관련 문제