25/04/30
내용
Java Spring 프로젝트를 개발해 보면서 JPA에 대해 배우고 실습하는 것에 중점
초급 개발자들을 위한 Spring Boot 설정, JDBC를 통한 DB연결, DB관리, RawJPA와 Spring Data JPA를 이용한 데이터 처리 및 객체 관리
프로젝트 설정부터 시작해서 DB의 기초적인 사용, JPA를 통한 보다 고급 데이터 관리 기술까지 다루며, Spring의 다양한 기능과 JPA의 효율적인 활용 방법을 실습 중심으로 설명
프로젝트 생성하기 (Spring Boot) : Spring Boot를 활용하여 프로젝트를 설정하고 초기 의존성을 구성 하는 방법 배우기
프로젝트 의존성 의해하기 (Implementation) : 5가지 프로젝트에서 각각 사용하게될 의존성에 대해서 배우기
데이터 베이스 생성 (H2) : 내장형 H2 데이터베이스의 설치 및 사용 방법을 배우기
데이터 베이스에서 데이터 다루기 (SQL) : 기본 SQL 명렁어를 사용하여 데이터를 조작하는 방법을 익힘
데이터베이스 연결 (Driver) : 적절한 JDBC 드라이버를 선택하고 설정하는 방법을 학습
데이터베이스 데이터를 외부에서 다루기 (JDBC) : JDBC를 이용해 애플리케이션에서 데이터베이스 데이터를 직접 다루는 실습을 진행
쿼리 파일 만들기 (Query Mapper) : 쿼리를 별도 파일로 관리하여 코드의 가독성과 유지보수성을 높이는 방법을 배움
쿼리 코드 만들기 (Query Annotation) : 어노테이션을 활용하여 클래스 내에 SQL 쿼리를 정의하고 실행하는 방법을 다룸
테이블 객체 이해하기 (RawJPA) : JPA의 기본 개념과 엔티티의 생명주기에 대해 배움
테이블 객체 만들기 (RawJPA Entity) : 데이터베이스 테이블과 매핑되는 Java 객체(엔티티)를 생성하는 방법을 실습
테이블 객체끼리 관계 만들기 (RawJPA Entity Mapping) : 엔티티 간의 다양한 관계를 설정하고 매핑하는 방법을 배움
테이블 객체 다루는법 (SpringData JPA) : Spring Data JPA의 기본 사용법과 리포지터리 인터페이스의 역할을 배움
테이블 객체로 자동 쿼리 생성 (JpaRepository) : JpaRepository를 사용하여 자동으로 CRUD 작업을 처리하는 방법을 학습
테이블 객체로 페이지 조회하기 (Pageable) : 페이지네이션 기법을 활용하여 데이터를 효율적으로 조회하는 방법을 실습
테이블 객체로 수동 쿼리 생성하기 (JPQL) : JPQL을 사용하여 커스텀 쿼리를 작성하고 실행하는 고급 기법을 배움
좀 더 멋지게 쿼리 생성하기 (QueryDSL) : QueryDSL을 사용하여 타입 안전하게 정교한 쿼리를 구성하는 방법을 배움
테이블 객체 방명록 설정하기 (Auditing) : Auditing 기능을 통해 엔티티의 생성 및 수정 시간을 자동으로 기록 하는 방법을 학습
필요한 부분만 효율적으로 조회하기 (Projection) : Projection을 사용하여 필요한 데이터만 선택적으로 조회하는 기법을 배움
이번 강의에서는 프로젝트 5개를 생성. 각각 어떤 프로젝트이고 어떤 목적이 있는지 학습
의존성 이란?
implementation으로 추가된 의존성은 다른 프로젝트 모듈에서 직접 접근할 수 없습니다. 이는 모듈 간의 캡슐화를 도와줍니다.의존성 옵션 (build.gradle > dependencies)
implemenataion 옵션runtimeOnly 옵션testImplementation 옵션JDBC Template 프로젝트와 같은 세팅이나 코드가 달라서 브랜치도 다릅니다. (jdbc 브랜치)
runtimeOnlyh2database:h2 H2는 자바 기반의 인메모리 데이터베이스로, 로컬 개발 및 테스트 환경에서 DB 서버를 별도로 구축하지 않고 사용할 수 있게 해 줍니다. 빠르고 경량이며 설정이 간단하다는 장점이 있습니다.implemenataionspring-boot-starter-jdbc 이 라이브러리는 스프링 부트 애플리케이션에서 JDBC를 사용하기 위한 모든 필수 의존성을 포함하고 있습니다. JDBC API를 통해 데이터베이스와의 연결 및 SQL 쿼리 실행을 쉽게 할 수 있도록 도와줍니다.spring-boot-starter-web 애플리케이션이 종료되지 않고 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)JDBC 프로젝트와 같은 세팅이나 코드가 달라서 브랜치도 다릅니다. (master 브랜치)
runtimeOnlyh2database:h2 위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.implemenataionspring-boot-starter-jdbc 위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다.spring-boot-starter-web 위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)QueryFileMapper 프로젝트와 같은 세팅이나 코드가 달라서 브랜치도 다릅니다. (master 브랜치)
runtimeOnlyh2database:h2 위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.implemenataionspring-boot-starter-jdbc 위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다.mybatis-spring-boot-starter MyBatis는 SQL 매핑 프레임워크로, 개발자가 SQL 문을 XML 혹은 어노테이션을 통해 관리할 수 있게 해 줍니다. 이 스타터 패키지는 스프링 부트 환경에서 MyBatis를 쉽게 통합하고 사용할 수 있도록 도와줍니다.spring-boot-starter-web 위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)QueryMapper 프로젝트와 같은 세팅이나 코드가 달라서 브랜치도 다릅니다. (query-file-mapper 브랜치)
runtimeOnlyh2database:h2 위와 동일하게, H2 데이터베이스를 제공하여, 실제 데이터베이스 서버 없이 개발 및 테스트가 가능합니다.implemenataionspring-boot-starter-jdbc 위와 동일하게, JDBC 연결 및 SQL 관리를 위한 기본적인 도구와 라이브러리를 제공합니다.mybatis-spring-boot-starter 위와 동일하게, 스프링 부트 환경에서 MyBatis를 쉽게 통합하고 사용할 수 있도록 도와줍니다. 이 프로젝트에서는 DAO, Mapper 클래스에 쿼리파일을 매핑시켜주는 역할도 하게됩니다.spring-boot-starter-web 위와 동일하게, 웹 서버를 띄울 수 있도록 도와줍니다. (H2 Console 웹페이지 띄우기)runtimeOnlyh2database:h2 이전 설명과 동일하게, 개발 및 테스트용 인메모리 데이터베이스로 사용됩니다.implemenataionspring-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 웹페이지 띄우기)