JPA Persistence Context and Dirty Checking

A managed entity from findById gets UPDATEd through dirty checking, with no save() call. The three entity states, how snapshot comparison works, what save() actually does, and the persistence context lifetime that all of it depends on.

July 6, 2026 · 4 min read

@Transactional Only Works Through the Proxy

@Transactional doesn’t work just because it’s declared. Spring wraps the bean in a proxy and intercepts only the calls that go through it. Why the annotation is silently ignored on private methods and self-invocation, and how @DataJpaTest’s test transaction hides the defect.

July 5, 2026 · 5 min read

Spring WebFlux Fundamentals — Non-blocking I/O and the Reactive Stack

Spring MVC assigns one thread per request. When I/O waits pile up, threads sit idle. WebFlux replaces this with an event loop-based non-blocking model. A summary of the structural differences from MVC, the Reactor pattern, and when to choose which.

March 25, 2024 · 4 min read

GDG Korea Android 11 Hackathon — YouTube Together

Entering the GDG Korea Android 11 Hackathon solo, building both server and app in three weeks.

August 29, 2020 · 2 min read