-
Spring JDBC공부 이야기/일과 관련된 공부 2021. 8. 11. 07:18
<글의 순서>
1. DAO 패턴
2. DataSource 객체
3. JDBC
4. JDBC vs Spring JDBC
5. JdbcTemplate 라이브러리
<시작>
DAO 패턴이란?
- 비즈니스 로직을 분리한 데이터 엑세스 로직으로 DB에 직접 연동된다는 점과 query문이 포함된다는 점이 특징이다.
- Spring에선 repository 클래스가 이를 담당한다.
DataSource 객체란?
- JDBC 라이브러리의 핵심이 되는 객체로 미리 Connection Pool을 설정할 수 있다는 점에서 멀티유저 환경에 필수적이다.
- SimpleDriverDataSource : 풀링 지원을 하지 않고 매번 커넥션을 생성하는 DataSource
- SingleConnectionDriverDataSource : 순차적으로 진행되는 통합테스트에서 사용가능하며 매번 커넥션을 생성하지 않는 DataSource
JDBC란?
- 일반 JAVA에서 사용하는 원시적인 데이터 접근 라이브러리로 직관성은 뛰어나지만 Connection에 대한 릴리즈가 필요한 Low-level 라이브러리
Spring JDBC vs JDBC
- Spring JDBC에선 Connection 생성, Statement 선언 등의 반복적인 작업을 내부적으로 제공해준다.
- ResultSet 객체를 이용해서 Query문에 대한 결과값을 가져온다. 기존 JDBC에선 While문을 사용해서 결과값을 가져온 반면, Spring JDBC에선 자동으로 Loop 처리를 해준다.
- Try-Catch문을 선언해서 예외처리를 하는 Checked Exception에 비해 Spring JDBC에선 해당 과정 없이 Runtime Exception 처리가 가능하다.
JdbcTemplate이란?
- new 키워드를 이용해서 객체를 생성하는 방법과
- @Autowired와 수정자 메소드(setter)를 사용해서 값을 주입하는 방법으로 나뉜다.
- 보통 JDBC는 실행 / 조회 / 배치 세 가지 기능을 수행한다.
- 실행(Update,Insert)
-> update 메소드를 확인해보면 총 두 가지 종류의 전달인자를 가지는 것을 볼 수 있다.
1 - query String
2 - 바인딩 변수
- 반환값은 int 타입으로 쿼리문에 의해 영향 받은 row 수를 의미한다.
- 조회(select)
- 단일 행을 처리하는 QueryForObject() 메소드와 여러 행을 처리하는 Query() 메소드로 나뉜다.
- 전달인자는 총 세 가지이다.
1 - query String
2 - 바인딩 변수
3 - row Mapper
- 반환인자는 <T>로 사용자 객체를 의미한다. 다수 행을 조회할 경우 List<T>
- RowMapper의 경우 내장된 ResultSet 객체와 수정자 메소드(setter)를 이용해 쿼리 결과값을 사용자 객체 <T>에 매핑시키는 역할을 한다.
'공부 이야기 > 일과 관련된 공부' 카테고리의 다른 글
예외 처리 (0) 2021.08.11 JDBC에 대해 더 깊게 배우기 (기능을 중심으로) (0) 2021.08.11 운영에서 발생한 일 - Optimizer, index (0) 2021.08.09 <SQL Loader> CTL에 대해서 (0) 2021.08.09 동시성에 대하여 (JAVA) (0) 2021.08.08