티스토리 뷰

Spring

Spring JDBC (Java DataBase Connection)

snail voyager 2020. 5. 16. 00:40
728x90
반응형

Connection Pool

일정 개수의 DB 커넥션을 미리 만들어두는 기법

  • 커넥션을 사용하는 시점에서 커넥션을 생성하는 시간을 아낄 수 있다.
  • 동시 접속자가 많더라도 커넥션을 생성하는 부하가 적기 때문에 더 많은 동시 접속자를 처리할 수 있다.

DataSource

커넥션 풀 기능을 제공하는 JDBC 모듈의 구현 클래스

  • Spring에서 DB 연동은 DataSource를 사용해서 DB Connection을 구한다
  • DataSource를 Bean으로 등록하고 DB 연동 기능을 구현한 Bean 객체는 DataSource를 주입받아 사용

JdbcTemplate

Connection, Statement, ResultSet을 직접 사용하지 않고 편리하게 쿼리를 실행할 수 있다

  • DAO 클래스에서 JdbcTemplate 객체에 DataSource를 주입받아 사용
  • 쿼리 실행을 위한 query(), update() 메서드 사용

Transaction

두개 이상의 쿼리를 한 작업으로 묶어주는 것

  • PlatformTransactionManager 클래스 Bean 설정
  • @EnableTransactionManagement : @Transactinal 메서드를 범위에서 실행하는 기능 활성화
  • 트랜잭션 범위에서 실행하고 싶은 메서드에 @Transactional 사용

AOP 처럼 프록시를 통해 @Transactional 구현

  1. 스프링은 @Transactional 적용된 Bean 객체를 찾아서 프록시 객체를 생성
  2. 프록시 객체는 @Transactional 붙은 메서드를 호출하면 PlatformTransactionManager를 사용해서 트랜잭션을 시작
  3. 트랜잭션을 시작한 후 실제 객체의 메서드를 호출하고, 성공적으로 실행되면 트랜잭션을 커밋
  4. 원본 객체의 메서드에서 RuntimeException이 발생하면 롤백
  5. SQLException은 RuntimeException을 상속하지 않아서 롤백X. @Transactional의 rollbackFor 속성 사용
    @Transactional(rollbackFor = SQLException.class)
728x90
반응형

'Spring' 카테고리의 다른 글

Session, Cookie  (0) 2020.05.18
Spring MVC  (0) 2020.05.16
AOP (Aspect Oriented Programming)  (0) 2020.05.12
의존성 주입 (Dependency Injection)  (0) 2020.05.11
Eclipse에서 Maven 프로젝트 생성, Git Hub 연동  (0) 2020.05.02
반응형
300x250