🚀 토스, 포항공대 출신 | 현업 백엔드 개발자(+9년) 🎥2만 유튜버 | 개발 콘텐츠 제작 📚 인프런 강사 | 누적 수강생 18,000+ 👥 개발자 취업 커뮤니티 운영 중 (8,000+) 🧩 오픈소스 (Gradle, Spring AI 등) 다수 Contributor 📝38개 서류 합격 및 크몽 이력서 첨삭 100+회 이상 경험 (평점 5.0점)
이 챌린지는 강의·교재를 제공하지 않습니다. 이미 알고 있거나 스스로 학습한 내용을 실전 문제와 GitHub PR로 증명하는 실행 트랙입니다. 시작 전 준비 · Spring Boot 프로젝트에서 엔티티와 Repository를 사용해본 경험이 필요합니다.
이미 익힌 개념을 코드·실험·설명으로 증명하는 5주 실행 트랙입니다.
WHAT YOU SHIP
완주하면 남는 것
영속성 컨텍스트와 생명주기 검증 테스트 모음
N+1 개선 전후 SQL 수와 동적 조회 API
매핑 ADR과 실제 로그가 연결된 JPA 면접 답변 20개
BEFORE
쿼리가 예상과 달라도 프레임워크 특성이라고 넘깁니다.
AFTER
영속성 상태와 SQL 수를 테스트로 고정하고 매핑·조회 전략의 비용을 설명합니다.
ACTUAL WORKFLOW
신청부터 리뷰까지, 실제 화면 순서대로
GitHub 주소를 복사해 제출하지 않습니다. 딩코 홈페이지가 개인 저장소 준비, 미션 브랜치와 PR 생성, 상세 리뷰 확인까지 이어줍니다.
1GitHub 먼저, Discord는 마지막카카오 로그인과 사전 진단을 마치면 개인 private 저장소를 준비하고, Discord 역할과 기수 채널은 마지막에 연결합니다.2내 private 저장소에서 미션 수행홈페이지가 ‘영속성 컨텍스트 4대 기능 실험과 근거형 답변’ 브랜치와 PR 생성을 이어줍니다. PR 주소를 복사해 붙여넣지 않습니다.391점과 구체적인 근거 확인자동 검사와 AI 리뷰의 잘한 점·개선 포인트를 딩코 상세 리뷰와 GitHub PR 댓글에서 확인하고 같은 PR을 수정합니다.4JPA 챌린지 1기 운영 채널개인별 상세 리뷰는 Discord에 올리지 않고, 주간 요약과 운영 공지만 공유합니다.
위 화면은 실제 운영 UI와 저장소·채널 규칙을 바탕으로 만든 예시입니다. 저장소명, 기수 번호와 리뷰 점수는 참가자와 기수에 따라 달라집니다.
5-WEEK ROUTE
이미 아는 내용을 실제 결과물로 바꾸는 주차별 미션
매주 구현·실험, 테스트·로그, 선택 근거와 질문 답변을 하나의 PR에 제출합니다. 질문은 외운 답을 따로 내는 숙제가 아니라 방금 만든 코드와 증거로 답합니다.
W1
JDBC의 고통과 영속성 컨텍스트
JDBC와 JPA를 비교하고 1차 캐시, 동일성, 변경 감지와 쓰기 지연을 로그로 검증합니다.
주간 통합 PR영속성 컨텍스트 4대 기능 실험과 근거형 답변
같은 트랜잭션 안에서 1차 캐시, 동일성, 변경 감지와 쓰기 지연을 각각 재현합니다.
각 실험에서 예상한 SQL과 실제 SQL 및 발생 시점을 기록합니다.
같은 요구를 JDBC로 처리할 때 직접 책임져야 하는 상태 관리와 비교합니다.
제출 증거 · 기능별 검증 테스트 · 실행 순서가 보이는 SQL 로그 · JDBC 대비 설명 · 근거형 질문 1~4 답변
함께 답할 근거형 질문 4개
1차 캐시가 애플리케이션 전역 캐시가 아닌 이유는 무엇인가요?
같은 식별자의 엔티티 동일성은 어떤 범위에서 보장되며 어떻게 확인했나요?
변경 감지는 어떤 시점에 어떤 정보를 비교해 UPDATE를 만들나요?
쓰기 지연이 실제 SQL 실행 순서를 바꾸는 지점을 로그로 어떻게 증명했나요?
W2
엔티티 매핑과 생명주기
키 생성 전략, flush, detached와 save/merge 함정을 실험합니다.
주간 통합 PR식별자와 save 함정 재현 및 근거형 답변
신규 엔티티와 분리 상태 엔티티를 각각 저장하고 persist와 merge 경로를 비교합니다.
식별자 전략 또는 직접 할당 여부에 따라 INSERT 발생 시점이 달라지는 사례를 기록합니다.
merge 반환 객체와 전달 객체를 혼동했을 때 생기는 회귀 테스트를 작성합니다.
제출 증거 · 엔티티 매핑 코드 · persist·merge 쿼리 비교 로그 · save·merge 회귀 테스트 · 근거형 질문 1~4 답변
함께 답할 근거형 질문 4개
Spring Data JPA의 save는 어떤 기준으로 persist와 merge를 선택하나요?
merge에 전달한 객체를 계속 사용하면 위험한 이유는 무엇인가요?
IDENTITY와 SEQUENCE 전략은 INSERT 시점에 어떤 차이를 만들 수 있나요?
flush와 commit을 구분해야 이번 로그를 정확히 설명할 수 있는 이유는 무엇인가요?
W3
연관관계와 지연 로딩
연관관계 주인, 프록시, LAZY, cascade와 orphan removal을 안전하게 적용합니다.
주간 통합 PR연관관계와 삭제 경계 검증 및 근거형 답변
User–Todo 관계의 주인을 정하고 양방향을 쓴다면 두 객체 상태를 함께 맞추는 편의 메서드를 작성합니다.
LAZY 연관을 접근하기 전후 SQL을 비교하고 프록시 초기화 시점을 기록합니다.
cascade와 orphanRemoval의 삭제 범위를 서로 다른 테스트로 검증합니다.
제출 증거 · 도메인 매핑 코드 · 로딩 전후 SQL 로그 · 삭제 범위 테스트 · 근거형 질문 1~4 답변
함께 답할 근거형 질문 4개
외래 키를 실제로 관리하는 연관관계 주인이 필요한 이유는 무엇인가요?
LAZY로 선언해도 N+1이 발생할 수 있는 이유는 무엇인가요?
cascade REMOVE와 orphanRemoval은 어떤 상황에서 결과가 달라지나요?
연관관계 편의 메서드가 데이터베이스가 아니라 객체 상태를 위해 필요한 이유는 무엇인가요?
W4
상속 매핑 비교와 선택형 확장
같은 결제 도메인을 SINGLE_TABLE과 JOINED로 비교하고 값 타입·복합 키는 선택 과제로 확장합니다.
주간 통합 PR도메인 매핑 의사결정 ADR과 근거형 답변
같은 결제 도메인을 SINGLE_TABLE과 JOINED 두 상속 전략의 최소 재현 모델로 구현합니다.
같은 H2 데이터와 조회 조건에서 생성 스키마, 다형성 조회 SQL과 변경 비용을 비교하고 측정 범위를 명시합니다.
선택한 전략과 버린 전략의 이유를 ADR로 기록합니다.
값 타입 불변성 또는 복합 키 계약 중 하나는 선택 과제로 실험할 수 있습니다.
제출 증거 · SINGLE_TABLE·JOINED 최소 재현 모델 · H2 스키마·다형성 조회 SQL 비교 · 최종 ADR · 근거형 질문 1~4 답변
함께 답할 근거형 질문 4개
상속 매핑 전략을 선택할 때 조회 성능과 스키마 정규화를 어떻게 비교했나요?
SINGLE_TABLE의 nullable 컬럼 비용과 JOINED의 조인 비용을 이번 모델에서 어떻게 확인했나요?
다형성 조회 SQL이 두 전략에서 어떻게 달랐고 H2 실험 결과를 어디까지 일반화할 수 있나요?
두 매핑안 중 버린 안이 더 적합해지는 요구사항은 무엇인가요?
W5
동적 조회와 N+1
동적 조건 조회에서 N+1을 재현하고 동일 조건의 쿼리 수와 결과 정합성을 비교합니다.
주간 통합 PRN+1 없는 동적 조회 API와 근거형 답변
생성된 Q 타입과 QueryDSL로 두 개 이상의 선택 조건을 조합하는 Todo 조회 API를 구현합니다.
서로 다른 연관 엔티티를 포함한 같은 데이터와 조회 조건에서 N+1을 재현하고 제공된 SQL 관측 도구로 개선 전후 쿼리 수를 비교합니다.
QueryDSL fetch join 또는 DTO projection을 선택해 결과 정합성 회귀 테스트를 작성하고 페이징·중복·결합도 비용을 설명합니다.
컬렉션 fetch join과 페이징 또는 벌크 연산 뒤 영속성 컨텍스트 정합성은 선택 과제로 별도 테스트할 수 있습니다.
제출 증거 · QueryDSL 동적 조회 API · 동일 조건 개선 전후 SQL 수 · 조회 결과 정합성 회귀 테스트 · 근거형 질문 1~4 답변
함께 답할 근거형 질문 4개
N+1은 LAZY와 EAGER 중 어느 쪽에서 발생하며 본질적인 원인은 무엇인가요?
선택한 조회 최적화 방식이 다른 대안보다 현재 요구에 맞는 이유는 무엇인가요?
QueryDSL 조건 조합에서 null·빈 값 경계를 어떤 규칙과 테스트로 고정했나요?
1차 캐시와 fixture INSERT가 쿼리 수 측정을 오염하지 않도록 어떤 순서로 통제했나요?
WEEKLY LOOP
한 주의 실전을 한 PR 안에서 끝냅니다
주차별 실전 문제 확인
개인 브랜치에서 미션 수행
코드·테스트·설명을 PR 제출
자동 검사와 AI 리뷰 확인
같은 PR을 수정하고 자동 병합
통과 PR과 공식 해설 확인
누적 동료 리뷰와 크루 학습 기록 반영
제출은 GitHub PR만 사용합니다. 실험 코드, SQL 로그와 ADR을 한 PR에서 자동 검사하고 수정 이력을 보존합니다. 필요한 증거가 PR 안에 있는지 자동으로 확인합니다.
CREW ENGAGEMENT
미션 한마디로 20분만 이야기합니다
2주차부터 PR에 한마디를 남기고, 크루는 막힌 점과 다른 접근만 나눕니다.
2주차부터 미션 한마디 PR 제출 때 막힌 점을 10~300자로 남깁니다.
팀이 정한 시간에 20분 화요일 21:15을 기본으로 막힌 점과 다른 접근만 나눕니다.
리더가 1~30자로 마무리 2주차부터 완료 크루 +5, 개인 완주와는 별도입니다.
팀 보너스 활동 참여자는 미션 한마디 외에 별도 글을 쓰지 않습니다. 크루 +5는 개인 완주와 별도입니다.
LIVE SESSION
라이브로 한 번, 진행 방식을 함께 맞춥니다
챌린지 기간 중 라이브 세션을 한 번 진행합니다. 완주 기준을 함께 맞추고, 제출이 화면에서 어떻게 흘러가는지 그 자리에서 확인합니다.
KICKOFF LIVE8/18(화) 20:00
60분 · 온라인
JPA 챌린지 킥오프 라이브
5주 진행 방식과 완주 기준 안내
월요일 킥오프에서 첫 미션 브랜치 준비와 수요일 시작 뒤 GitHub PR 제출 데모
실시간 Q&A
참여 링크는 시작 전 Discord 공지에 올립니다. 라이브에 참여하지 못해도 완주 기준과 제출 방법은 딩코 홈페이지와 Discord 공지에서 그대로 확인할 수 있습니다.
CHALLENGE CONTRACT
개념 학습은 각자, 실전과 피드백은 함께
이 챌린지는 강의·교재·Notion·보너스 자료를 제공하지 않습니다. 이미 알고 있거나 스스로 학습한 내용을 실제 문제에 적용하고 GitHub PR로 증명합니다.
챌린지가 제공합니다
주차별 실전 문제 · 개인 private 실습 저장소 · 명확한 통과 기준 · 자동 검사와 AI 리뷰 · 동료 비교와 완주 기록
참가자가 준비합니다
해당 분야의 기본 개념 · Git과 GitHub PR 경험 · 매주 실행할 시간 · 부족한 개념을 스스로 보완하는 태도
선택형 사전학습 · 별도 구매 · 9시간 39분
[Lv2] 현업 개발자의 JPA 완전 정복 - 영속성 컨텍스트부터 실무 패턴까지
이 강의와 교재는 챌린지에 포함되지 않으며 수강도 필수가 아닙니다. 사전 진단에서 부족한 영역이 있거나 개념 보완이 필요할 때만 선택하세요.
인프런 신청 여부와 별개로, 위의 ‘모집·참여 확인’ 버튼에서 현재 기수의 모집 상태를 확인합니다. 딩코에서 카카오 로그인하면 자리가 확보되고, 모든 연결을 마치면 참여 준비가 완료됩니다.
딩코 모집·참여 확인 페이지에서 현재 기수를 선택하고, 카카오 로그인하면 챌린지 멤버십이 즉시 생성되어 자리가 확보됩니다.
기수별 사전 진단을 통과하면 GitHub 연결 단계가 열립니다.
GitHub를 먼저 연결하면 조직 권한 확인과 JPA 실험용 private 저장소 준비가 자동으로 예약됩니다.
Discord를 연결하면 JPA 챌린지 1기 카테고리와 공지·읽을거리·질문·자유 채널 권한이 설정됩니다.
홈페이지에서 submit/<미션> 브랜치를 만들고 실험 코드·SQL 로그를 push한 뒤 버튼 한 번으로 PR을 제출합니다.
자동 검사와 AI 리뷰에서 통과한 최신 커밋은 Dingco가 자동 병합하고 자유 채널에서 함께 축하합니다. 크루 Discord에서는 질문과 진행 상황을 함께 나누고, 공식 리뷰는 같은 크루 통과 PR을 우선으로 열되 없으면 같은 기수 다른 크루 PR로 이어집니다. 점수판은 주간에는 잠정 반영되고 마지막 누적 리뷰 마감 뒤 최종 확정됩니다.
같은 기수의 읽기 권한 개인 저장소는 private으로 유지되며 같은 기수 참가자는 주차 결과 공개 뒤 읽기 전용으로만 참고할 수 있습니다. 쓰기 권한은 본인 저장소에만 부여됩니다. 크루는 보통 5~6명으로 운영하고 명단은 공개 전까지 숨깁니다. 세부 점수표는 공개하지 않으며, 최종 점수 확정 뒤 동의한 우승 크루만 Hall of Fame·GitHub 배지·공개 이름으로 소개합니다. 참가 등록은 시작 주 수요일 19:00에 마감합니다. 사전 진단이 있는 트랙은 같은 시각까지 통과해야 하며, 크루 명단과 전용 Discord 채널은 20:00에 공개됩니다. 공식 시작과 1주차 미션 공개는 같은 날 21:00이며, 그 뒤로는 매주 수요일 21:00에 새 미션이 열리고 다음 화요일 21:00에 제출이 마감됩니다. 공식 리뷰는 매주 즉시 하지 않아도 되지만, 서로 다른 주차 기준으로 필요한 리뷰 수를 마지막 주차 뒤 일요일 21:00 전까지 채워야 합니다. 1주차 문제·개인 저장소·미션 브랜치는 미리 준비할 수 있고, PR 제출 버튼은 내 크루 채널 준비가 끝난 뒤 자동으로 활성화됩니다. GitHub·Discord 연결이 덜 끝난 참가자는 배정된 크루를 유지합니다.
FIT CHECK
이런 분께 맞고, 이런 분께는 맞지 않습니다
추천합니다
JPA로 CRUD는 만들지만 예상하지 못한 SQL이 두려운 분
N+1, cascade, save/merge를 말이 아니라 재현 코드로 정리하고 싶은 분
실무 선택과 면접 설명을 같은 증거에서 꺼내고 싶은 분
추천하지 않습니다
Spring Data JPA로 엔티티 저장·조회 경험이 전혀 없는 분
SQL 로그와 회귀 테스트 없이 정답 패턴만 받고 싶은 분
COMPLETION
완주 기준을 시작 전에 공개합니다
5주 동안 주차별 통합 미션 PR 5개를 모두 제출합니다.
서로 다른 4개 주차의 통과 PR에 공식 리뷰를 제출합니다.
시작 전 준비
Spring Boot 프로젝트에서 엔티티와 Repository를 사용해본 경험이 필요합니다.
매주 약 5~7시간 동안 실험, 로그 비교, PR 수정에 참여해야 합니다.
FAQ
참여 전에 가장 많이 묻는 것
기존 10주 부트캠프와 같은 과정인가요?
아닙니다. 이 챌린지는 5주 동안 한 과목을 완주하는 별도 트랙입니다. 더 긴 프로젝트·취업 집중 과정이 필요한 경우에만 10주 부트캠프로 이어집니다.
강의나 교재도 함께 제공되나요?
아닙니다. 챌린지는 주차별 문제, private 실습 저장소, 제출 기준과 리뷰 루프를 제공합니다. 연결 강의는 별도 구매 가능한 선택형 사전학습이며 수강은 필수가 아닙니다.
홈페이지 제출이나 링크 붙여넣기도 가능한가요?
제출 결과는 GitHub PR로만 받습니다. 다만 저장소·브랜치·PR 준비와 리뷰 확인은 딩코 홈페이지 버튼으로 쉽게 이어집니다.
Discord에는 무엇이 공개되나요?
Discord에는 개인별 상세 리뷰를 올리지 않고, 주간 요약과 운영 공지만 공유합니다. JPA 챌린지 1기 공용 채널은 읽을거리, 질문, 자유 대화와 운영 안내를 위한 공간입니다.