Spring 50 < JPA 심화 강의 >

김규현·2025년 4월 30일
0

25/04/30

내용

Java Spring 프로젝트를 개발해 보면서 JPA에 대해 배우고 실습하는 것에 중점

초급 개발자들을 위한 Spring Boot 설정, JDBC를 통한 DB연결, DB관리, RawJPA와 Spring Data JPA를 이용한 데이터 처리 및 객체 관리

프로젝트 설정부터 시작해서 DB의 기초적인 사용, JPA를 통한 보다 고급 데이터 관리 기술까지 다루며, Spring의 다양한 기능과 JPA의 효율적인 활용 방법을 실습 중심으로 설명

1주차 프로젝트 세팅

프로젝트 생성하기 (Spring Boot) : Spring Boot를 활용하여 프로젝트를 설정하고 초기 의존성을 구성 하는 방법 배우기

프로젝트 의존성 의해하기 (Implementation) : 5가지 프로젝트에서 각각 사용하게될 의존성에 대해서 배우기

2주차 데이터베이스 다루기

데이터 베이스 생성 (H2) : 내장형 H2 데이터베이스의 설치 및 사용 방법을 배우기

데이터 베이스에서 데이터 다루기 (SQL) : 기본 SQL 명렁어를 사용하여 데이터를 조작하는 방법을 익힘

데이터베이스 연결 (Driver) : 적절한 JDBC 드라이버를 선택하고 설정하는 방법을 학습

데이터베이스 데이터를 외부에서 다루기 (JDBC) : JDBC를 이용해 애플리케이션에서 데이터베이스 데이터를 직접 다루는 실습을 진행

3주차 RawJPA 기본

쿼리 파일 만들기 (Query Mapper) : 쿼리를 별도 파일로 관리하여 코드의 가독성과 유지보수성을 높이는 방법을 배움

쿼리 코드 만들기 (Query Annotation) : 어노테이션을 활용하여 클래스 내에 SQL 쿼리를 정의하고 실행하는 방법을 다룸

테이블 객체 이해하기 (RawJPA) : JPA의 기본 개념과 엔티티의 생명주기에 대해 배움

테이블 객체 만들기 (RawJPA Entity) : 데이터베이스 테이블과 매핑되는 Java 객체(엔티티)를 생성하는 방법을 실습

테이블 객체끼리 관계 만들기 (RawJPA Entity Mapping) : 엔티티 간의 다양한 관계를 설정하고 매핑하는 방법을 배움

4주차 SpringData JPA 기본

테이블 객체 다루는법 (SpringData JPA) : Spring Data JPA의 기본 사용법과 리포지터리 인터페이스의 역할을 배움

테이블 객체로 자동 쿼리 생성 (JpaRepository) : JpaRepository를 사용하여 자동으로 CRUD 작업을 처리하는 방법을 학습

테이블 객체로 페이지 조회하기 (Pageable) : 페이지네이션 기법을 활용하여 데이터를 효율적으로 조회하는 방법을 실습

테이블 객체로 수동 쿼리 생성하기 (JPQL) : JPQL을 사용하여 커스텀 쿼리를 작성하고 실행하는 고급 기법을 배움

5주차 SpringData JPA 심화

좀 더 멋지게 쿼리 생성하기 (QueryDSL) : QueryDSL을 사용하여 타입 안전하게 정교한 쿼리를 구성하는 방법을 배움

테이블 객체 방명록 설정하기 (Auditing) : Auditing 기능을 통해 엔티티의 생성 및 수정 시간을 자동으로 기록 하는 방법을 학습

필요한 부분만 효율적으로 조회하기 (Projection) : Projection을 사용하여 필요한 데이터만 선택적으로 조회하는 기법을 배움

프로젝트 세팅 (SpringBoot)

이번 강의에서는 프로젝트 5개를 생성. 각각 어떤 프로젝트이고 어떤 목적이 있는지 학습

의존성 이란?

  1. compile 시점 의존성: 프로젝트를 컴파일할 때 사용됩니다. 즉, 해당 라이브러리의 API를 사용할 수 있습니다.
  2. runtime 시점 의존성: 애플리케이션을 실행할 때 사용됩니다. 즉, 실행 시에도 라이브러리가 필요합니다.
  3. 은닉성: implementation으로 추가된 의존성은 다른 프로젝트 모듈에서 직접 접근할 수 없습니다. 이는 모듈 간의 캡슐화를 도와줍니다.

의존성 옵션 (build.gradle > dependencies)

  • implemenataion 옵션
    • 직접적인 의존성을 추가할 때 사용됩니다.
    • 이는 특정 라이브러리나 모듈이 프로젝트 컴파일 시 필요하지만, 해당 라이브러리가 프로젝트 외부로 공개될 필요가 없다는 것을 의미합니다.
  • runtimeOnly 옵션
    • compile 시점에는 필요없고 runtime 시점에만 필요한 라이브러리를 추가할 때 사용합니다.
    • 대표적으로 Logging 관련 라이브러리, DB 관련 라이브러리 등이 있습니다.
  • testImplementation 옵션
    • 테스트 코드를 수행할 때 적용할 라이브러리를 추가할 때 사용합니다.
    • 테스트 용도로만 라이브러리나 빌트인 DB 사용하고 싶다면 해당 옵션을 사용하면 됩니다.

1. JDBC 프로젝트 세팅

JDBC Template 프로젝트와 같은 세팅이나 코드가 달라서 브랜치도 다릅니다. (jdbc 브랜치)

  • runtimeOnly
    • h2database:h2 H2는 자바 기반의 인메모리 데이터베이스로, 로컬 개발 및 테스트 환경에서 DB 서버를 별도로 구축하지 않고 사용할 수 있게 해 줍니다. 빠르고 경량이며 설정이 간단하다는 장점이 있습니다.
  • implemenataion
    • spring-boot-starter-jdbc 이 라이브러리는 스프링 부트 애플리케이션에서 JDBC를 사용하기 위한 모든 필수 의존성을 포함하고 있습니다. JDBC API를 통해 데이터베이스와의 연결 및 SQL 쿼리 실행을 쉽게 할 수 있도록 도와줍니다.
    • spring-boot-starter-web 애플리케이션이 종료되지 않고 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)

2. JDBC Template 프로젝트 세팅

JDBC 프로젝트와 같은 세팅이나 코드가 달라서 브랜치도 다릅니다. (master 브랜치)

  • runtimeOnly
    • h2database:h2 위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.
  • implemenataion
    • spring-boot-starter-jdbc 위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다.
    • spring-boot-starter-web 위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)

3. QueryMapper 프로젝트 세팅

QueryFileMapper 프로젝트와 같은 세팅이나 코드가 달라서 브랜치도 다릅니다. (master 브랜치)

  • runtimeOnly
    • h2database:h2 위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.
  • implemenataion
    • spring-boot-starter-jdbc 위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다.
    • mybatis-spring-boot-starter MyBatis는 SQL 매핑 프레임워크로, 개발자가 SQL 문을 XML 혹은 어노테이션을 통해 관리할 수 있게 해 줍니다. 이 스타터 패키지는 스프링 부트 환경에서 MyBatis를 쉽게 통합하고 사용할 수 있도록 도와줍니다.
    • spring-boot-starter-web 위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)

4. QueryFileMapper 프로젝트 세팅

QueryMapper 프로젝트와 같은 세팅이나 코드가 달라서 브랜치도 다릅니다. (query-file-mapper 브랜치)

  • runtimeOnly
    • h2database:h2 위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.
  • implemenataion
    • spring-boot-starter-jdbc 위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다.
    • mybatis-spring-boot-starter 위와 동일하게, 스프링 부트 환경에서 MyBatis를 쉽게 통합하고 사용할 수 있도록 도와줍니다. 이 프로젝트에서는 DAO, Mapper 클래스에 쿼리파일을 매핑시켜주는 역할도 하게됩니다.
    • spring-boot-starter-web 위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)

5. JPA 프로젝트 세팅

  • runtimeOnly
    • h2database:h2 이전 설명과 동일하게, 개발 및 테스트용 인메모리 데이터베이스로 사용됩니다.
  • implemenataion
    • spring-boot-starter-jdbc JDBC 접근을 위한 기본 설정과 라이브러리를 포함합니다. JPA 설정에서도 내부적으로 JDBC 사용이 필요할 수 있습니다.
    • spring-boot-starter-data-jpa 이 스타터는 JPA(Java Persistence API)를 사용하여 관계형 데이터베이스를 객체 지향적으로 다룰 수 있게 해 주며, Hibernate 같은 JPA 구현체를 자동으로 설정합니다. 또한, 리포지터리 디자인 패턴의 구현을 쉽게 해 줍니다.
    • querydsl-jpa QueryDSL은 타입 안전한 쿼리를 지원하는 프레임워크로, 복잡한 쿼리 작성을 보다 쉽고 안전하게 할 수 있습니다. JPA와 함께 사용될 때, 엔티티 객체에 대한 동적 쿼리 생성을 용이하게 해 줍니다.
    • spring-boot-starter-web 위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)

0개의 댓글