Skip to content

Commit 5ff8cf0

Browse files
authored
Merge pull request #5 from Modern-Programming-Club/docs/add-week-3-plan
Docs/add week 3 plan
2 parents a6c2c9b + f58342b commit 5ff8cf0

File tree

8 files changed

+94
-54
lines changed

8 files changed

+94
-54
lines changed

guide/github-action-test.md

Lines changed: 0 additions & 2 deletions
This file was deleted.

plan/3. study_plan-curriculum.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,24 @@
2828
- **2.3.** JPA(Java Persistence API)를 이용한 DB 연동
2929
- **2.3.1.** Entity 클래스 작성
3030
- **2.3.2.** Repository 클래스 작성
31-
- **2.3.3.** Service 클래스 작성
32-
- **2.3.4.** Controller 클래스 작성
33-
3431

32+
### 📅 3주차
33+
- **3.1.** JPA 심화 학습
34+
- **3.1.1.** Converter 사용
35+
- **3.1.2.** Embeddable 사용
36+
- **3.1.3.** Auditing 사용
37+
- **3.1.4.** ManyToOne, OneToMany 사용
38+
- **3.2.** Spring Boot 테스트 코드 작성
39+
- **3.2.1.** 단위 테스트 (Unit Test) 작성
40+
- **3.2.2.** 통합 테스트 (Integration Test) 작성
41+
- **3.2.3.** MockMvc 사용
42+
- **3.3.** RESTful API 설계 및 구현
43+
- **3.3.1.** RESTful API 기본 원칙
44+
- **3.3.2.** Request, Response DTO 클래스 작성
45+
- **3.3.3.** API 예외 처리
46+
- **3.3.4.** Spring Validation 사용
47+
- **3.3.5.** Converter 사용
48+
- **3.3.6.** Serializer/Deserializer 사용
3549

3650

3751

plan/4.1. study_plan-week-1-summary.md

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,23 +24,6 @@
2424
- 객체지향 프로그래밍은 객체를 중심으로 프로그래밍하는 방법론입니다. 객체는 속성과 행위를 가지며, 객체 간의 상호작용을 통해 프로그램을 구성합니다. 객체지향 프로그래밍은 코드의 재사용성을 높이고, 유지보수성을 높입니다.
2525
- e.g. PhoneNumber 객체를 구현합니다. 멤버 변수로 국가번호, 지역번호, 전화번호를 가집니다. 이는 장점이 있습니다. 첫째, 전화번호를 한 번만 입력하면 객체가 전화번호를 분리하여 저장합니다. 둘째, 전화번호를 수정할 때 한 번만 수정하면 됩니다. 셋째, 전화번호를 출력할 때 객체가 전화번호를 조합하여 출력합니다.
2626

27-
### 📅 2주차
28-
- **2.1.** GitHub 저장소 생성
29-
- **2.1.1.** GitHub 저장소 생성
30-
- **2.1.2.** GitHub 저장소에 프로젝트 Push
31-
- **2.1.3.** GitHub 저장소에 README.md 작성
32-
- **2.1.4.** GitHub 저장소에 .gitignore 작성
33-
- **2.2.** Docker를 이용한 로컬 DB 구성 및 Application 연동
34-
- **2.2.1.** Docker Desktop 설치
35-
- **2.2.2.** docker-compose.yml 작성
36-
- **2.2.3.** Docker 컨테이너 실행
37-
- **2.2.4.** Application과 DB 연동
38-
- **2.3.** JPA(Java Persistence API)를 이용한 DB 연동
39-
- **2.3.1.** Entity 클래스 작성
40-
- **2.3.2.** Repository 클래스 작성
41-
- **2.3.3.** Service 클래스 작성
42-
- **2.3.4.** Controller 클래스 작성
43-
4427

4528

4629

plan/4.1. study_plan-week-2-summary.md

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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+
위 코드가 실행되면 SpringUserRepository 인터페이스를 구현한 프록시 객체를 생성합니다.
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+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 🖥️ 실습으로 익히는 모던 자바 프로그래밍
2+
## 📜 스터디 요약
3+
### 📅 3주차
4+
- **3.1.** JPA 심화 학습
5+
- **3.1.1.** Converter 사용
6+
- **3.1.2.** Embeddable 사용
7+
- **3.1.3.** Auditing 사용
8+
- **3.1.4.** ManyToOne, OneToMany 사용
9+
- **3.2.** Spring Boot 테스트 코드 작성
10+
- **3.2.1.** 단위 테스트 (Unit Test) 작성
11+
- **3.2.2.** 통합 테스트 (Integration Test) 작성
12+
- **3.2.3.** MockMvc 사용
13+
- **3.3.** RESTful API 설계 및 구현
14+
- **3.3.1.** RESTful API 기본 원칙
15+
- **3.3.2.** Request, Response DTO 클래스 작성
16+
- **3.3.3.** API 예외 처리
17+
- **3.3.4.** Spring Validation 사용
18+
- **3.3.5.** Converter 사용
19+
- **3.3.6.** Serializer/Deserializer 사용
20+
21+
22+
23+
24+
25+
26+
27+
28+

spring-boot/src/main/java/com/mpc/springboot/member/domain/entity/Member.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ public Member(MemberCode code, MemberName name) {
2929
this.code = code;
3030
this.name = name;
3131
}
32-
33-
public static Member create(MemberCode code, MemberName name) {
34-
return new Member(code, name);
35-
}
3632
}
3733

3834

spring-boot/src/main/java/com/mpc/springboot/member/domain/mapping/MemberCodeConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import com.mpc.springboot.member.domain.vo.MemberCode;
99

10-
@Converter(autoApply = true)
10+
@Converter
1111
public class MemberCodeConverter implements AttributeConverter<MemberCode, String> {
1212

1313
@Override

0 commit comments

Comments
 (0)