본 게시글의 출처는 인프런 김영한님의 강의입니다.
강의명은 실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발입니다.
출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1
프로젝트 생성

데이터베이스와 연결하기 위해 Connection 객체를 생성하는 작업은 비용이 굉장히 많이 드는 작업 중 하나이다.
Connection 객체를 생성하는 과정
① 애플리케이션에서 DB 드라이버를 통해 커넥션을 조회
② DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다.
③ DB 드라이버는 TCP/IP 커넥션이 연결되면 아이디와 패스워드, 기타 부가 정보를 DB에 전달
④ DB는 아이디, 패스워드를 통해 내부 인증을 거친 후 내부에 DB를 생성
⑤ DB는 커넥션 생성이 완료되었다는 응답을 보낸다.
⑥ DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다.
→ DB 연결할 때마다 Connection 객체를 새로 만드는 것은 비용이 많이 들며, 굉장히 비효율적이다.
이러한 과정을 계속 반복하지 않고, 애플리케이션 로딩 시점에 객체를 미리 생성해두고 연결 요청이 들어올 시 준비된 객체를 사용하여 성능을 향상시키는 방법이다. 쉬운 말로 connetion을 어떤 장소에 만들어두고 꺼내쓴다고 이해하면 편한 것 같다.
※ Spring Boot 2.0 이전 버전에서는 Apche 재단의 오픈 소스인 Apache Commons DBCP를 주로 사용하였지만, Spring Boot 2.0 이후에는 HikariCP를 기본 DBCP로 채택하여 사용되고 있다. 아래 그림을 참고하면 Hikari의 성능이 우수한 것을 알 수 있다.

주의! application.yml 같은 yml 파일은 띄어쓰기(스페이스) 2칸으로 계층을 만듭니다. 따라서 띄어쓰기 2칸을 필수로 적어주어야 합니다.
예를 들어서 아래의 datasource 는 spring: 하위에 있고 앞에 띄어쓰기 2칸이 있으므로
spring.datasource 가 됩니다. 다음 코드에 주석으로 띄어쓰기를 적어두었습니다.
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'