A 5-week JPA Challenge, Cohort 2: From N+1 to the Persistence Context, Reproduced Hands-On
A five-week, hands-on challenge where you reproduce the persistence context and N+1 under the same conditions, compare them using SQL logs, and document each week in a single GitHub PR.
🚀 Former Toss, POSTECH graduate | Current Backend Developer (+9 years) 🎥 YouTuber with 20,000 subscribers | Development content creator 📚 Inflearn Instructor | Over 18,000+ cumulative students 👥 Managing a developer career community (8,000+ members) 🧩 Contributor to multiple open-source projects (Gradle, Spring AI, etc.) 📝 Passed 38 resume screenings & experienced in 100+ Kmong resume reviews (5.0 rating)
I deliver vivid, real-world industry insights in a way that is easy to understand and logically deductive. Truyền tải những thông tin thực tế sống động từ ngành công nghiệp một cách dễ hiểu và có tính diễn dịch.
JPA 5-Week Challenge · Free · First 100 Participants Only
DINGCO CHALLENGE · 5 WEEKS
The JPA you’ve relied on, see it for yourself in just 5 weeks.
Reproduce the persistence context and N+1 under the same conditions, compare them through SQL logs, and document it as one PR each week. After 5 weeks, you’ll have experiment records explained by query counts and a mapping ADR.
Free · First 100 people only
Created by Dingcodingco, with 18,000+ cumulative Inflearn students, an average satisfaction rating of 4.9, and experience helping students get hired by 38 companies.
Program periodSeptember 23, 2026 - October 27, 2026
Weekly execution time6 hours per week
Submission: 5 GitHub PRs5 PR trên GitHub
This challenge does not provide lectures or textbooks. It is an execution track where you prove what you already know or have learned independently through practical problems and GitHub PRs. Preparation before starting · Experience using entities and repositories in a Spring Boot project is required.
A 5-week execution track where you prove concepts you’ve already learned through code, experiments, and explanations.
WHAT YOU SHIP
What You’ll Have at the End
Persistence context and lifecycle verification test suite
SQL count before and after N+1 improvements and a dynamic query API
20 JPA interview answers connecting mapping ADRs with actual logs
BEFORE
Even when the query differs from what was expected, I dismiss it as a framework characteristic.
AFTER
I lock in entity states and SQL counts with tests and explain the costs of mapping and query strategies.
ACTUAL WORKFLOW
From application to review, in the order shown on the actual screen
We do not copy and submit a GitHub URL. The Dingo homepage guides you through preparing a personal repository, creating a mission branch and PR, and checking detailed reviews.
1GitHub first, Discord lastAfter completing Kakao login and the pre-assessment, we prepare your personal private repository, then connect your Discord role and cohort channel at the end.2Complete the mission in my private repositoryThe website guides you through creating the “Persistence Context: Experimenting with the Four Core Functions and Evidence-Based Answers” branch and a PR. You don’t need to copy and paste the PR URL.3Review the score of 91 and the specific supporting evidenceCheck the strengths and areas for improvement identified by the automated checks and AI review in the Dingco detailed review and GitHub PR comments, then update the same PR.4JPA Challenge Cohort 2 Operations Channel Individual detailed reviews are not posted on Discord; only weekly summaries and operational announcements are shared.
The screen above is an example based on the actual operations UI and repository and channel rules. The repository name, cohort number, and review score vary depending on the participant and cohort.
5-WEEK ROUTE
Weekly missions that turn what you already know into real deliverables
Each week, submit your implementation and experiments, tests and logs, rationale for your choices, and answers to the questions in a single PR. The questions are not homework requiring separately memorized answers; answer them using the code you just built and the evidence you gathered.
W1
The Pain of JDBC and the Persistence Context
Compare JDBC and JPA, and verify the first-level cache, identity, dirty checking, and write-behind through logs.
Weekly integrated PRExperiments on the four key functions of the persistence context and evidence-based answers
Reproduce the first-level cache, identity, dirty checking, and write-behind separately within the same transaction.
In each experiment, record the expected SQL, the actual SQL, and when it was executed.
Compare this with the state management you must handle yourself when processing the same request with JDBC.
Submitted evidence · Feature-specific verification tests · SQL logs showing the execution order · Explanation compared with JDBC · Answers to evidence-based questions 1–4
함께 답할 근거형 질문 4개
Why isn't the first-level cache an application-wide cache?
Within what scope is entity identity for the same identifier guaranteed, and how did you verify it?
At what point does dirty checking compare what information to generate an UPDATE?
How did you prove through logs where write-behind actually changes the order of SQL execution?
W2
Entity Mapping and Lifecycle
We experiment with key generation strategies, flush, and the pitfalls of detached entities and save/merge.
Weekly integrated PRReproducing identifier and save pitfalls with evidence-based answers
Save a new entity and a detached entity separately, and compare the persist and merge paths.
Record cases where the timing of INSERT execution differs depending on the identifier strategy or whether the identifier is assigned directly.
Write regression tests for when the object returned by merge is confused with the object passed to persist.
Weekly integrated PRValidating relationship and deletion boundaries, with evidence-based answers
Determine the owner of the User–Todo relationship, and if you use a bidirectional relationship, write convenience methods that keep both object states synchronized.
Compare the SQL before and after accessing the LAZY association, and record when the proxy is initialized.
Verify the deletion scopes of cascade and orphanRemoval with separate tests.
Submission evidence · Domain mapping code · SQL logs before and after loading · Deletion scope tests · Answers to evidence-based questions 1–4
함께 답할 근거형 질문 4개
Why is a relationship owner needed to actually manage the foreign key?
Why can the N+1 problem occur even when something is declared LAZY?
In what situations do cascade REMOVE and orphanRemoval produce different results?
Why are convenience methods for bidirectional relationships needed for object state rather than the database?
W4
Inheritance Mapping Comparison and Optional Extensions
Compare the same payment domain using SINGLE_TABLE and JOINED, and extend value types and composite keys as optional assignments.
Weekly integrated PRDomain mapping decision ADR and evidence-based answers
Implement the same payment domain as a minimal reproducible model using the SINGLE_TABLE and JOINED inheritance strategies.
Using the same H2 data and query conditions, compare the generated schemas, polymorphic query SQL, and modification costs, and specify the measurement scope.
Record the reasons for the chosen and discarded strategies in an ADR.
As an optional assignment, you may experiment with either value-type immutability or the composite-key contract.
Submission evidence · Minimal reproduction models for SINGLE_TABLE and JOINED · H2 schemas and polymorphic query SQL comparison · Final ADR · Answers to evidence-based questions 1–4
함께 답할 근거형 질문 4개
How did you compare query performance and schema normalization when choosing an inheritance mapping strategy?
How did you assess the cost of nullable columns in SINGLE_TABLE and the cost of joins in JOINED for this model?
How did the polymorphic query SQL differ between the two strategies, and to what extent can the H2 experimental results be generalized?
What requirements would make the mapping option you discarded more suitable?
W5
Dynamic Queries and N+1
Reproduce N+1 in dynamic condition queries and compare the number of queries and result consistency under the same conditions.
Weekly Integrated PRDynamic Query API Without N+1 and Evidence-Based Answers
Implement a Todo retrieval API that combines two or more optional conditions using generated Q types and QueryDSL.
Reproduce N+1 with the same data and query conditions, including different related entities, and compare the number of queries before and after the improvement using the provided SQL observation tools.
Choose either a QueryDSL fetch join or DTO projection, write a result consistency regression test, and explain the costs of pagination, duplication, and coupling.
Consistency of the persistence context after a collection fetch join and pagination or bulk operations can be tested separately as an optional task.
Submission evidence · QueryDSL dynamic query API · SQL count before and after the improvement under the same conditions · regression tests for query result consistency · answers to evidence-based questions 1–4
함께 답할 근거형 질문 4개
Does N+1 occur with LAZY or EAGER, and what is the fundamental cause?
Why is the selected query optimization approach better suited to the current requirements than the other alternatives?
What rules and tests did you use to establish the boundaries for null and empty values when combining QueryDSL conditions?
In what order did you control things to ensure that the first-level cache and fixture INSERTs did not contaminate the query count measurement?
WEEKLY LOOP
Complete a week’s practical work in a single PR.
Check the weekly hands-on problem.
Complete the mission on your personal branch
Submit code, tests, and explanations in a PR
Check the automated tests and AI review
Update the same PR and merge automatically
Check approved PRs and the official explanations
Incorporate accumulated peer reviews and crew learning records
Only GitHub PRs may be submitted. Experimental code, SQL logs, and ADRs are automatically checked in a single PR, and the revision history is preserved. The system automatically verifies that the necessary evidence is included in the PR.
CREW ENGAGEMENT
We talk for only 20 minutes about the mission note.
Starting in week 2, leave a brief comment on the PR, and the crew shares only blockers and alternative approaches.
From week 2, leave one comment on the mission When submitting a PR, describe what you were stuck on in 10–300 characters.
20 minutes at the time set by the team By default, share only what you're stuck on and alternative approaches at 21:15 on Tuesdays.
The leader wraps up in 1–30 characters Starting in week 2, completion earns Crew +5, separate from individual completion.
Team bonus activity Participants should not write a separate post beyond a one-line mission comment. Crew +5 is separate from individual completion.
LIVE SESSION
Once live, we align on how it will be conducted together.
One live session will be held during the challenge. We’ll align on the completion criteria and check on the spot how submissions flow on the screen.
KICKOFF LIVE9/21 (Mon) 20:00
60 minutes · Online
JPA Challenge Kickoff Live
Overview of the 5-Week Format and Completion Criteria
At Monday’s kickoff, we’ll prepare the branch for the first mission and demonstrate how to submit a GitHub PR after starting on Wednesday.
Live Q&A
The participation link will be posted in the Discord announcement before the start. Even if you cannot attend the live session, you can still find the completion criteria and submission instructions on the Dinkode homepage and in the Discord announcement.
CHALLENGE CONTRACT
Learn the concepts individually, practice and feedback together
This challenge does not provide lectures, textbooks, Notion pages, or bonus materials. You will apply what you already know or have learned independently to real-world problems and prove it through GitHub PRs.
What the challenge provides
Weekly hands-on problems · Personal private practice repository · Clear passing criteria · Automated checks and AI reviews · Peer comparison and completion records
What participants prepare
Basic concepts in the relevant field · Experience with Git and GitHub PRs · Time to commit each week · An attitude of independently making up for insufficient knowledge
[Lv2] Mastering JPA Completely for Working Developers — From the Persistence Context to Practical Patterns
This course and textbook are not included in the challenge, and taking the course is not required. Choose it only if you have gaps in certain areas identified in the pre-assessment or need to reinforce your understanding of the concepts.
Regardless of whether you applied through Inflearn, check the current cohort’s recruitment status using the “Recruitment & Participation Check” button above. Log in with Kakao on Dingo to secure your spot, and once all connections are complete, you’ll be ready to participate.
On the Dinko recruitment and participation confirmation page, select the current cohort, and log in with Kakao to immediately create your challenge membership and secure your spot.
Once you pass the pre-assessment for your cohort, the GitHub connection step will become available.
Connecting GitHub first automatically schedules the organization permission check and preparation of the private repository for JPA experiments.
Connecting Discord will configure access to the JPA challenge–specific category and the announcements, reading materials, questions, and casual chat channels.
Create a submit/<mission> branch on the homepage, push your experimental code and SQL logs, then submit a PR with a single click.
The latest commit that passes the automated checks and AI review is automatically merged by Dingco, and we celebrate together in the free channel. In the crew Discord, we share questions and progress, while official reviews prioritize passing PRs from the same crew; if there are none, we move on to PRs from other crews in the same cohort. The scoreboard is provisionally updated during the week and finalized after the deadline for the final cumulative review.
Read access for participants in the same cohort Personal repositories remain private, and participants in the same cohort may only refer to them in read-only mode after the weekly results are made public. Write access is granted only to each participant’s own repository. Crews typically consist of 5–6 members, and the roster is kept hidden until it is made public. Detailed score sheets are not disclosed, and after the final scores are confirmed, only the winning crews that have given their consent are featured in the Hall of Fame with a GitHub badge and their public names. Registration closes at 19:00 on the Wednesday of the starting week. Tracks with a pre-assessment require participants to pass by the same time, and the crew rosters and dedicated Discord channels are revealed at 20:00. The official start and the release of the Week 1 mission take place at 21:00 on the same day. After that, a new mission opens every Wednesday at 21:00, and submissions close the following Tuesday at 21:00. Official reviews do not have to be completed immediately each week, but the required number of reviews, based on different weeks, must be completed by 21:00 on the Sunday after the final week. The Week 1 problem, personal repository, and mission branch can be prepared in advance, and the PR submission button is automatically activated once the participant’s crew channel is ready. Participants whose GitHub–Discord connection is not fully set up will retain their assigned crew.
FIT CHECK
This is a good fit for those who, but not for those who...
Recommended for
Those who can build CRUD with JPA but are afraid of unexpected SQL.
Those who want to organize N+1, cascade, and save/merge with reproducible code rather than just words.
Those who want to derive practical choices and interview explanations from the same evidence
Not recommended.
Those with no experience whatsoever in saving or retrieving entities with Spring Data JPA
For those who only want the correct patterns without SQL logs or regression tests
COMPLETION
We disclose the completion criteria before the start.
Submit all five weekly integrated mission PRs over the course of five weeks.
Submit official reviews for passing PRs from four different weeks.
Preparation Before Starting
Experience using entities and repositories in a Spring Boot project is required.
Each week, you’ll need to spend approximately 5–7 hours conducting experiments, comparing logs, and revising PRs.
FAQ
Most frequently asked questions before joining
Is this the same program as the existing 10-week bootcamp?
No. This challenge is a separate track that takes you through one subject over five weeks. It leads into the 10-week bootcamp only if you need a longer project- and employment-focused course.
Are lectures or textbooks also provided?
No. The challenge provides weekly problems, a private practice repository, submission criteria, and a review loop. The accompanying course is optional prerequisite learning available for separate purchase, and taking it is not required.
Can I submit through the website or paste a link?
Submissions are accepted only through GitHub PRs. However, you can easily navigate to repository and branch setup, PR preparation, and review checks using buttons on the Dingo homepage.
What will be made public on Discord?
We do not post detailed individual reviews on Discord; we only share weekly summaries and operational announcements. The shared channel for the second JPA challenge is a space for reading materials, questions, casual conversation, and operational guidance.
CREATOR NOTE
In the AI era, what should junior developers study?
You can first check in the video what criteria to use to run and verify this problem.