|
| 1 | +# 🖥️ 실습으로 익히는 모던 자바 프로그래밍 |
| 2 | +## 📜 스터디 요약 |
| 3 | +### 📅 2주차 |
| 4 | +- **2.1.** GitHub 저장소 생성 |
| 5 | + - **2.1.1.** GitHub 저장소 생성 |
| 6 | + - **2.1.2.** GitHub 저장소에 프로젝트 Push |
| 7 | + - **2.1.3.** GitHub 저장소에 README.md 작성 |
| 8 | + - README.md는 프로젝트를 소개하는 문서입니다. 프로젝트의 목적, 사용법, 기술 스택 등을 소개합니다. |
| 9 | + - **2.1.4.** GitHub 저장소에 .gitignore 작성 |
| 10 | +- **2.2.** Docker를 이용한 로컬 DB 구성 및 Application 연동 |
| 11 | + - [docker-compose-guide](../guide/docker-compose-guide.md) 참고 |
| 12 | + - **2.2.1.** Docker Desktop 설치 |
| 13 | + - **2.2.2.** docker-compose.yml 작성 |
| 14 | + - **2.2.3.** Docker 컨테이너 실행 |
| 15 | + - **2.2.4.** Application과 DB 연동 |
| 16 | +- **2.3.** JPA(Java Persistence API)를 이용한 DB 연동 |
| 17 | + - JPA는 Java Persistence API의 약자로, Java에서 데이터베이스를 사용하는 방법을 제공합니다. JPA를 사용하면 SQL을 직접 작성하지 않고, 객체를 통해 데이터베이스를 조작할 수 있습니다. |
| 18 | + - **2.3.1.** Entity 클래스 작성 |
| 19 | + - **2.3.2.** Repository 클래스 작성 |
| 20 | + - JPA Query Method 사용 |
| 21 | + - JPA Query Method를 사용하면 메소드 이름만으로 쿼리를 생성할 수 있습니다. 메소드 이름을 통해 쿼리를 생성하므로, 쿼리에 오타가 발생할 확률이 줄어듭니다. |
| 22 | + - 실행 과정은 다음과 같습니다. |
| 23 | + 1. JpaRepository 인터페이스를 상속받은 인터페이스를 생성합니다. Spring이 내부적으로 프록시 객체를 생성합니다. |
| 24 | + ```java |
| 25 | + public interface UserRepository extends JpaRepository<User, Long> { |
| 26 | + User findByName(String name); |
| 27 | + } |
| 28 | + ``` |
| 29 | + 위 코드가 실행되면 Spring은 UserRepository 인터페이스를 구현한 프록시 객체를 생성합니다. |
| 30 | + ```java |
| 31 | + public class UserRepository$$EnhancerBySpringCGLIB extends UserRepository { |
| 32 | + @Override |
| 33 | + public User findByName(String name) { |
| 34 | + return this.invokeQueryMethod("findByName", name); |
| 35 | + } |
| 36 | + } |
| 37 | + ``` |
| 38 | + 2. 메소드 이름을 분석하여 JPQL([JPQL이란?](https://velog.io/@youmakemesmile/Spring-Data-JPA-JPQL-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95Query-nativeQuery-DTO-Mapping-function)) 쿼리를 생성합니다. |
| 39 | + 2. JPQL 쿼리를 실행하여 결과를 반환합니다. |
| 40 | + |
| 41 | + |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | + |
0 commit comments