- 들어가기 전에
이번 시간에는 실습을 통해 Spring JDBC에 대해 알아보도록 하자
- 학습 목표
1. DTO와 DAO에 대한 개념을 이해한다.
2. Spring JDBC를 이용해 DAO를 작성할 수 있다.
- 핵심 개념
- DTO
- DAO
- NamedParameterJdbcTemplate
- DTO
- Data Transfer Object의 약자
- 계층 간 데이터 교환을 위한 JavaBeans
- 여기서 계층이란 컨트롤러 뷰, 비지니스 계층, 퍼시스턴스 계층을 의미
- 일반적으로 DTO는 로직을 가지고 있지 않고, 순수한 데이터 객체
- 필드와 getter, setter를 가진다. 추가적으로 toString(), equals(), hashCode() 등의 Object 메소드를 오버라이딩 할 수 있다.
- 데이터를 들고 다닐 때 하나씩 들고 다니면 불편하기 때문에, 어떤 하나의 가방처럼 담아서 데이터들을 한꺼번에 갖고 다니는 용도
- DAO
- Data Accescc Object의 약자
- 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 객체
- 보통 데이터베이스를 조작하는 기능을 전담하는 목적으로 만들어짐
- ConnectionPool
- DB연결은 비용이 많이 든다.
- 커넥션 풀은 미리 커넥션을 여러개 맺어 둔다.
- 커넥션이 필요하면 커넥션 풀에게 빌려서 사용한 후 반납한다.
- 커넥션을 반납하지 않으면 ConnectionPool에 사용한 Connection이 없어서 프로그램이 늦어지거나 심할 경우에는 장애가 발생한다.
- DataSource
- 커넥션 풀을 관리하는 목적으로 사용되는 객체
- DataSource를 이용해 커넥션을 얻어오고 반납하는 등의 작업을 수행
- DataSource로부터 얻은 Connection에 close() 메소드는 반납하도록 구현되어있다.
- Spring JDBC를 이용한 DAO 작성 실습
- Spring 컨테이너인 ApplicationContext는 설정 파일로 ApplicationConfig라는 클래스를 읽어들인다.
- ApplicationConfig에는 componentScanAnnotation이 DAO 클래스를 찾도록 설정하낟.
- 찾은 모든 DAO 클래스는 Spring 컨테이너가 관리하게 된다.
- Application Context는 DBConfig 클래스르 import 하게 된다.
- DBConfig 클래스에서는 데이터 소스와 트랜잭션 메니저 객체를 생성한다.
- DAO는 필드로 NamedParameterJdbcTemplate과 SimpleJdbcInsert를 가진다. 두 개의 객체 모두 SQL의 실행을 편리하게 하도록 Sprint JDBC에서 제공하는 객체이기 때문에 DB 연결을 위해 내부적으로 DataSource를 사용하기 때문이다.
- 이 두개의 객체는 RoleDao 생성자에서 초기화를 하게된다.
- RoleDao 생성자에서 초기화된 두 개의 객체를 이용해서 RoleDao의 메소드를 구현하게 된다.
- Spring JDBC를 사용하는 사용자는 파라미터와 SQL을 가장 많이 신경써야 된다.
- SQL은 RoleDao SQL의 상수로 정의를 해놓음으로써 나중에 SQL이 변경될 경우에 좀 더 편하게 수정할 수 있도록 하였다.
- 한 건의 Role 정보를 저장하고 전달하기 위한 목적으로 Role DTO가 사용되고 있다.
- 실습
- daoexam
'Progamming > BoostCourse' 카테고리의 다른 글
Spring MVC 구성요소 (0) | 2019.03.14 |
---|---|
Spring MVC란? (0) | 2019.03.14 |
Spring JDBC 소개 (0) | 2019.03.13 |
Java Config를 이용한 설정 (0) | 2019.03.13 |
XML 파일을 이용한 설정 (0) | 2019.03.13 |
댓글