2026-06-13 (토) · 미션 공개 + 주간 방향
@Transactional
code
23:59
"Week 1 코드를 그대로 이어 받는다."
setter
save()
게이트 완화: N+1 못 잡아도 fetch join / @EntityGraph 차이 를 SQL 로그로 설명하면 통과.
@EntityGraph
# Week 1 폴더의 project/ 를 Week 2 로 복사 cp -r 02-week1-spring-boot/project 03-week2-jpa/project # JPA 의존성 + H2/MySQL 추가, 메모리 저장소 → JpaRepository
이게 Week 4~7 starter 운영 원칙과 같은 흐름. 환경 세팅 반복 금지.
EntityManager 가 캐시 처럼 동작.
==
각 기능을 evidence/n1-detection-guide.md 에서 본인 말로.
Post 1 : N Comment — 누가 FK?
Post
Comment
// N 쪽이 주인 (FK 가짐) @ManyToOne(fetch = LAZY) @JoinColumn(name = "post_id") private Post post; // 거울 쪽 (mappedBy) @OneToMany(mappedBy = "post") private List<Comment> comments;
-- N+1 : 1 + N 번 SELECT * FROM post; -- 1 SELECT * FROM comment WHERE post_id=?; -- N -- fetch join : 1 번 SELECT p, c FROM Post p LEFT JOIN FETCH p.comments c;
spring.jpa.show-sql=true 로 직접 확인하고 캡처.
spring.jpa.show-sql=true
save() 호출 안 해도 트랜잭션 종료 시 UPDATE.
@Transactional public void updateTitle(Long id, String title) { Post post = postRepo.findById(id).orElseThrow(); post.changeTitle(title); // setter 호출만 // save() 호출 X — 변경 감지가 처리 }
evidence/dirty-checking-snapshot.md 에 flush 전후 SQL 로그 캡처.
save(new Post(...))
03-week2-jpa/ ├── report.md ├── project/ # Week 1 코드 이어 받기 └── evidence/ ├── entity-design-notes.md # Entity 설계 결정 ├── association-owner-decision.md # 연관관계 주인 근거 ├── n-plus-one-before.md # N+1 SQL 로그 ├── n-plus-one-after.md # fetch join 후 로그 ├── dirty-checking-snapshot.md # 변경 감지 로그 └── n1-detection-guide.md # 학습 보조 (main)
Week 2 는 기술 포인트 적용 가중. SQL 로그 한 장이 핵심 evidence.
잘된 점 1줄 / 개선 1줄
+5
0
submissions.md
evidence/review-response.md
피어리뷰는 본인 코드 보는 눈 이 길러지는 가장 빠른 방법.
21:00
{cohort}-질문
{cohort}-리뷰
{cohort}-til
오늘 15:00 — 도메인 모델링 강의 (게시판 5초 vs 5시간) 다음 주 토 14:00 — Week 3 (이력서 스토리라인) + 첫 학생 발표
잠깐 쉬고 15:00 에 다시 뵐게요.
다음 주: Week 3 — 백엔드 이력서 차별화 + 학생 내부 발표 시작.