UmurInan
Java Topic

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.

Backend

Posted on May 19, 2026

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
Backend

Posted on May 18, 2026

Four 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
Backend

Posted on May 14, 2026

Checked 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
Backend

Posted on May 13, 2026

Your 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
Backend

Posted on May 12, 2026

Your 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
Backend

Posted on May 11, 2026

Your 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
Backend

Posted on May 4, 2026

Your 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
Backend

Posted on Apr 27, 2026

Spring 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
Backend

Posted on Apr 24, 2026

The 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
Backend

Posted on Apr 9, 2026

The 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
Backend

Posted on Mar 26, 2026

Spring 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
Backend

Posted on Feb 15, 2026

Why 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
Backend

Posted on May 19, 2026 advanced

Spring 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
Backend

Posted on May 19, 2026 advanced

Spring 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

Posted on Apr 12, 2026 intermediate

@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
Database

Posted on Apr 7, 2026 intermediate

The 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