13강 Spring Data Access 기술과 DataSource
- 목차
- 내용
- Spring-Data Access 기술 이해
- DataSource 이해와 설정
- 학습 목표
- 스프링에서 사용 가능한 데이터 접근 기술에 대해 이해합니다.
- DataSource 개념을 이해하고 설정합니다.
- 내용
- DAO 디자인 패턴
- 비즈니스 서비스와 로우 레벨의 데이터 액세스 작업을 분리해 놓았습니다.
- 고로 DAO가 DB에게 데이터 액세스를 하기 위한 작업이 필요합니다.
- 데이터 액세스 기술
- JDBC
- 자바에서의 관계형 데이터 베이스 접속 기술
- JDK 레벨에서 지원하며, 다른 고수준 기술의 기반이 됩니다.
- Spring JDBC
- 스프링 자체적으로 지원하는 JDBC Wrapper
- MyBatis
- Third-party 자바 관계형 DB 매핑 라이브러리입니다.
- 자바 오브젝트와 SQL문을 자동으로 맵핑합니다. - SQL Mapper.
- JPA
- Java ORM 표준 인터페이스
- Java 객체 내 데이터를 Delete하면, DB 내에서 데이터가 Delete 가 삭제되는 것처럼
Java 객체를 DB 처럼 사용하는 것입니다.
- Hibernate
- 자바 ORM 구현체 (Object Relation Management)
- 자바 객체를 갖고 CRUD 쿼리를 실행하는 작업함!!
- ORM 기술이란?
- 애초에 자바와 DB의 Relation 은 맞지 않기 때문에
컬럼과 수동으로 맞춰주는 작업이 필요한데,
이것을 자동으로 맞춰주는 기술이 바로 ORM 기술입니다.
- 애초에 자바와 DB의 Relation 은 맞지 않기 때문에
- JDBC
- Spring-JDBC
- 스프링 프레임워크에 포함된 스프링 공식 데이터베이스 연동 라이브러리
- 유연한 Transaction 처리를 위해 Connection 단의 높은 추상화를 제공
- Connection-Pool을 지원하고, Result Mapper의 추상화를 사용해 쿼리를 편리하게 수행할 수 있음
- MyBatis, Hibernate 도 내부적으로 Spring-JDBC를 사용함
- MyBatis
- XML을 별도 파일로 분리하고 자바 객체와 SQL 매핑을 지원하는 프레임워크
- 초기에 자바가 JDBC 를 연동하는것도 부담되는 일이었음.
SQL 문이 JAVA 에 내장되어있는 것이 굉장히 부담 되어있었음.
SQL 문도 하나의 프로그래밍 언어인데, 자바를 SQL 문으로 변환하고, 테스트는 등
굉장히 불편한 작업이었지만 MyBatis 가 해소해주었음.
- 초기에 자바가 JDBC 를 연동하는것도 부담되는 일이었음.
- 별도의 라이브러리로 존재하고 스프링과 연동모듈을 지원합니다.
- mybatis-spring 라이브러리 필요
- 스칼라 MyBatis, .NET MyBatis 등이 있음
- XML을 별도 파일로 분리하고 자바 객체와 SQL 매핑을 지원하는 프레임워크
- DataSource
- 어떤 DB를 연동하든, 어떤 DB 연동기술을 쓰든 반드시 필요한 기술.
- DB 연동시 가장 로우레벨에서 필요한 객체가 Connection 객체이며
- DataSource 는 Connection 가져오기 위한 기술입니다.
- Connection 확보 되었다 == DB 에 연결 되었다.
- DataSource 는 Bean 으로 만들어 처리됩니다.
- Spring 은 DataSource를 통해 Connection 을 제공합니다.
- DataSource 설정 방법
- DriverManager 사용 방법
- DriverManagerDataSource 클래스를 사용
- Connection Pool이나 JNDI 를 사용할 수 없는 경우 사용
- Connection Pool 을 사용하는 방법
- 데이터베이스 커넥션을 미리 여러 개를 확보해두고
클라이언트의 요청에 따라 미리 생성된 커넥션을 제공하여
커넥션 하도록 해주고 다시 반납 받는 시스템! - 매번 물리적으로 커넥션을 생성하지 않아 성능이 좋아짐
- 데이터베이스 커넥션을 미리 여러 개를 확보해두고
- DriverManager 사용 방법
- DataSource 실제 적용 예
- 클래스 명에 따라 커넥션 풀을 사용할 것인지 설정할 수 있음.
- property 파일을 이용한 설정
- 애플리케이션이 동작하는 환경(개발/테스트/스테이징/운영)에 따라서 자주 바뀔수 있음
- 환경에 따라 자주 변경될 수 있는 내용은 properties 파일로 분리하는 것이
가장 깔끔하며 XML 처럼 복잡한 구성이 필요 없고
키와 값의 쌍(key=value)으로 구성하면 됨.
'Room 102. Back-end > Spring' 카테고리의 다른 글
[실전 개발자를 위한 Spring Framework ] 강의 - MyBatis (0) | 2020.05.31 |
---|---|
[실전 개발자를 위한 Spring Framework ] 강의 - Context 분리와 전략 (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - JUnit (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - Static (0) | 2020.05.31 |
[실전 개발자를 위한 Spring Framework ] 강의 - RESTful API (0) | 2020.05.31 |