Java
Java is a deceptively simple language: the source compiles, the IDE is happy, and then production turns up edge cases the compiler never warned about. These posts dig into the language and runtime behavior that catches even experienced Java engineers.
Open Session in View Is Spring Boot's Quietest Footgun
Spring Boot ships with Open Session in View on by default. Lazy loading from controllers, hidden N+1s, JDBC connections pinned for the whole HTTP request.
Read more BackendFour Spring Boot 4 Features That Actually Change Your Code
Spring Boot 4 release notes are long. Four features change how you actually write code: API versioning, HTTP service clients, virtual threads, RestTestClient.
Read more BackendChecked Exceptions Were a Mistake and Spring Proved It
Checked exceptions force callers to acknowledge errors, not handle them. Spring's unchecked hierarchy and the @Transactional rollback default show the cost.
Read more BackendYour Spring Bean Is Not What You Think It Is
Spring's default bean scope is singleton. The bugs appear when a service holds mutable state, a scoped bean is misused, or ThreadLocal cleanup is skipped.
Read more BackendYour Equals and HashCode Are Wrong
Hibernate entities in a Set stop being findable after you persist them. equals and hashCode based on a null id change the moment the database assigns a value.
Read more BackendYour JWT Is Not a Session
JWTs cannot be revoked, permissions inside them go stale, and clocks drift. The failure modes that appear when you treat a signed token like a session.
Read more BackendYour Async Code Is Still Single-Threaded
Async lets one thread do more I/O. It does not let one thread do more CPU. Most async-related performance disappointments come from confusing those two.
Read more BackendSpring Boot Auto-Configuration Is Magic Until It Isn't
Spring Boot configures your app without a line of config. Then it configures something you did not want. Here is how the mechanism works and how to control it.
Read more BackendThe Hibernate Query You Didn't Write
Hibernate writes SQL you never see. Three repository lines execute a 2,100-character query that is usually worse than anything you would have written by hand.
Read more BackendThe Java Terminology Survival Guide
Java EE, Jakarta EE, javax, SE, JDK, JRE, OpenJDK, Spring Boot, Spring MVC. A plain-language guide to every confusing name in the entire Java ecosystem.
Read more BackendSpring Boot Security Is Hard and That's Okay
Spring Security has a brutal learning curve. The filter chain is confusing, the docs assume too much, and 403 errors haunt your dreams. But it's worth it.
Read more BackendWhy Component-Based Structure Beats Traditional Package-by-Layer in Java
Why organizing Java code by feature instead of by layer (controller/service/repository) gives you better modularity, easier navigation, and real encapsulation.
Read more BackendSpring Data Derived Queries: Crossing Boundaries
Nested traversal in Spring Data derived queries: the underscore rule, the distinct-join trap, the same-collection trap, projections, EntityGraph, streams.
Read more BackendSpring Data Derived Queries: The Single-Entity Toolkit
Spring Data writes JPQL from your method names. The full single-entity keyword set: equality, comparison, string ops, null, In, OrderBy, Top, Pageable, countBy.
Read more Backend@Transactional Demystified: Every Attribute With Working Tests
Every @Transactional attribute explained with real working code: propagation, rollbackFor, readOnly, timeout, and isolation, each proved by a failing test.
Read more DatabaseThe N+1 Problem: All Four Fetch Strategies Explained
A hands-on walkthrough of all four Hibernate fetch strategies with real query counts. Each fix is verified by a test that proves the N+1 problem first.
Read more