💻본 포스팅은 '스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 김영한'님의 강의를 듣고 작성되었습니다.
스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의
백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의
www.inflearn.com
목차
1. 커넥션풀(ConnectionPool)
2. 데이터소스(Data source)
1. 커넥션풀(Connection Pool)
커넥션풀 이전의 문제 상황
- DriveManager를 통해서 데이터베이스에 커넥션을 요청하면 매번 새로운 커넥션을 획득한다.
- 이때 커넥션을 계속해서 제한 없이 요청해서 받게 되면 TCP/IP 과정에서 많은 낭비가 일어나고 또한 TCP/IP 연결등의 여러 과정에 의해 시간이 오래 걸려 결국 사용자에게 응답 지연이라는 결과를 가져오게 된다.
- 이러한 문제점을 해결하기 위해서 사용되는 개념이 커넥션풀이다.
커넥션풀?
- 커넥션을 미리 제한된 개수만큼 생성해서 커넥션풀에서 관리하는 것을 커넥션풀이라고 한다.
- 매번 커넥션을 요할 때 새로 생성해서 주는 것은 매우 비효율적인 일이기 때문에 커넥션풀을 사용한다.
기존의 DriveManager를사용한 커넥션 방법
커넥션 풀을 사용한 커넥션 방법
[커넥션풀은 오픈소스로 잘 만들어져 있기 때문에 오픈소스를 활용해서 사용하는 것이 좋다.]
2. 데이터소스(Data source)
커넥션을 얻는 방법은 DriveManager를 사용하거나, 커넥션 풀을 사용하는 등의 다양한 방법이 존재한다.
이때 직접 커넥션을 매 요청마다 얻는 DriveManager를 사용하다 효과적인 관리를 위해 커넥션 풀을 사용하고 싶다면 이를 위해서는 어떤 방법을 사용해야할까? (즉, 커넥션 획득 방법을 변경하고 싶을때의 문제다.)
- 커넥션을 획득하는 방법을 추상화한다.
- DataSource를 자바에서는 커넥션을 획득하는 방법(DriveManger로 직접 획득, 혹은 오픈소스를 활용한 커넥션 풀을 사용하는 방법 등등.)을 추상화하는 인터페이스로 제공한다.
- 그러나 DriveManager는 DataSource를 구현하지 않았기 때문에 DriveManagerDataSource를 사용해서 커넥션 획득 방법을 변경해주어야 합니다.
커넥션 획득 방법의 추상화?
말 그대로 커넥션 획득 방법을 하나로 고정해 놓는 것이 아닌 변경하고 싶을 때 구현부만 바꿔서 사용할 수 있게 한다는 의미로 대부분의 개발은 반복되는 코드의 표준화와 추상화 작업을 하는 것이라고 생각하면 편하다!
'Back-End > Spring' 카테고리의 다른 글
[Spring DB][자바 예외] - 자바의 예외 이해 (0) | 2022.07.12 |
---|---|
[Spring DB][커넥션풀과 데이터소스 이해] - DataSource의 이해 (0) | 2022.06.24 |
[Spring DB][JDBC 이해] - JDBC 사용 (0) | 2022.06.22 |
[Spring DB][JDBC 이해] - JDBC와 ORM SQL Mapper에 대해서 알아보자. (0) | 2022.06.21 |
[Spring MVC2][API 예외처리] - 기본 예외처리, 서블릿 예외처리, 스프링이 지원하는 API 예외처리 (0) | 2022.06.02 |