JPA 강의 - 프로젝트 환경설정

방혁·2024년 6월 30일

JPA 강의

목록 보기
1/6
post-thumbnail

본 게시글의 출처는 인프런 김영한님의 강의입니다.
강의명은 실전! 스프링 부트와 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

프로젝트 환경설정

프로젝트 생성

라이브러리 살펴보기

  • 핵심 라이브러리
    • 스프링 MVC
    • 스프링 ORM
    • JPA, 하이버네이트
    • 스프링 데이터 JPA
  • 기타 라이브러리
    - H2 데이터베이스 클라이언트
    - 커넥션 풀 : 부트 기본은 HikariCP
    - WEB(thymeleaf)
    - 로깅 slf4j & LogBack
    - 테스트

추가 학습 1 - connection pool

데이터베이스와 연결하기 위해 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칸을 필수로 적어주어야 합니다.
예를 들어서 아래의 datasourcespring: 하위에 있고 앞에 띄어쓰기 2칸이 있으므로
spring.datasource 가 됩니다. 다음 코드에 주석으로 띄어쓰기를 적어두었습니다.

쿼리 파라미터 로그 남기기

  • 로그에 org.hibernate.orm.jdbc.bind: trace 추가하기
  • 외부 라이브러리 사용
    • https://github.com/gavlyukovskiy/spring-boot-data-source-decorator
    • 위 라이브러리를 사용하면 쿼리문의 value값까지 볼 수 있다는 장점이 있음.
      but, 성능저하의 우려가 있으니 개발과정에서만 사용하고 배포시 사용하지 않는 것을 추천
    • 스프링 부트 3.0 이상을 사용하면 라이브러리 버전을 1.9.0 이상을 사용해야 한다.
 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
profile
반갑습니다 👋

0개의 댓글