티스토리 뷰
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 구현
- 스프링은 @Transactional 적용된 Bean 객체를 찾아서 프록시 객체를 생성
- 프록시 객체는 @Transactional 붙은 메서드를 호출하면 PlatformTransactionManager를 사용해서 트랜잭션을 시작
- 트랜잭션을 시작한 후 실제 객체의 메서드를 호출하고, 성공적으로 실행되면 트랜잭션을 커밋
- 원본 객체의 메서드에서 RuntimeException이 발생하면 롤백
- 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