ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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>에 매핑시키는 역할을 한다.

     

Designed by Tistory.