우리는 DB에 액세스하기 위해 JdbcTemplate을 사용하려고합니다. 그러나 각 클래스에서 사용할 수있는 많은 DB 연결이 있으므로 jdbcTemplate을 주입하는 것이 atm 옵션이 아닙니다. 따라서 우리가 할 경우독립 실행 형 JdcbTemplate 사용
jdbcTemplate = new JdbcTemplate(dataSource);
트랜잭션 정책은 무엇입니까? 자동 커밋은 DB에서 해제됩니다.
우리는 DB에 액세스하기 위해 JdbcTemplate을 사용하려고합니다. 그러나 각 클래스에서 사용할 수있는 많은 DB 연결이 있으므로 jdbcTemplate을 주입하는 것이 atm 옵션이 아닙니다. 따라서 우리가 할 경우독립 실행 형 JdcbTemplate 사용
jdbcTemplate = new JdbcTemplate(dataSource);
트랜잭션 정책은 무엇입니까? 자동 커밋은 DB에서 해제됩니다.
각 javax.sql.DataSource
개체가 자동 커밋을 사용하도록 설정하거나 자동 커밋을 사용하지 않도록 설정하고 트랜잭션 논리를 프로그래밍 방식으로 쓸 수 있습니다.
java.sql.Connection
및 javax.sql.DataSource
클래스에는 모두 자동 커밋 사용/사용 안 함 방법이 있습니다.
의존성 삽입과 Spring과 관련하여 저장소에 데이터 소스 개체를 삽입 할 수 있습니다. 각 저장소가 org.springframework.jdbc.core.support.JdbcDaoSupport
클래스를 확장하도록하면 파생 된 getJdbcTemplate()
메소드로 JdbcTemplate 객체를 사용할 수 있습니다.
또한 Spring이 트랜잭션 처리를 처리하도록 할 수 있습니다. XA 트랜잭션 관리자가 없으면 각 데이터 소스마다 하나의 트랜잭션 관리자가 필요합니다. 많은 트랜잭션 관리자의 경우 @Transactional
주석을 사용한 선언적 트랜잭션 지원은 불가능합니다. 그러나 트랜잭션 관리자를 서비스 클래스에 삽입 할 수는 있습니다. 이 내용은 참조 설명서 here에 설명되어 있습니다.
그래서 JdbcTemplate은 아무 것도 지정하지 않으면 모든 업데이트 후에 커밋 할 것입니다. – Flyhard
그것은 내가 사용했던 모든'DataSource'에 대한 기본 동작입니다. 따라서 JdbcTemplate.update (..)가 커밋하지 않으면'DataSource' 설정을 확인해야합니다. – Espen
javax.sql.DataSource에는 자동 커밋에 대한 언급이 없습니다. –