UmurInan
Spring Boot Topic

Spring Boot

Spring Boot is the Java backend framework I use the most, and the one that bites the most. These posts cover bean scopes, auto-configuration, @Transactional, security, and the surprises that show up only after a service has been running in production for a while.

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 10, 2026

Hibernate's ddl-auto Is Not a Migration Tool

ddl-auto: update silently adds columns and never drops them. What it does to your schema, why it fails on renames, and how to safely replace it with Flyway.

Read more
Backend

Posted on Apr 28, 2026

Why Your Service Slows Down at 9am Every Day

Your service slows every morning for the same five reasons: JVM warmup, cold caches, pool growth, clustered crons, deployment timing. Here's how to fix each.

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 15, 2026

Connection Pool Tuning: A Practical Guide

HikariCP's defaults look sensible until your app hits production load. Here's how to actually size your connection pool using Little's Law, not guesswork.

Read more
Backend

Posted on Apr 12, 2026

@Transactional Is Not Magic

@Transactional looks simple until you hit self-invocation, wrong exception types, or silent failures on private methods. Here's what it actually does.

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 28, 2026

Connection Pools: The Thing You Never Think About Until Production Burns

Connection pools sit quietly until they break. Here is what happens when they fail, the warning signs to watch, and how to catch it before production burns.

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 May 16, 2026 advanced

HikariCP in Production: Tuning, Monitoring, and pgbouncer

Tune HikariCP for production Spring Boot 4 services on Postgres. Little's Law sizing, the properties that matter, monitoring signals, pgbouncer fronting.

Read more
Database

Posted on Apr 25, 2026 intermediate

Database Indexes Explained: A PostgreSQL Walkthrough With EXPLAIN ANALYZE

B-tree, composite, partial indexes proved with EXPLAIN ANALYZE on 500k Postgres rows. Plus the three ways EXPLAIN ANALYZE lies to you. Tests in the repo.

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 10, 2026 intermediate

Optimistic vs Pessimistic Locking in JPA

Two JPA strategies for preventing the lost update problem. @Version for optimistic locking, SELECT FOR UPDATE for pessimistic. Real SQL output, working tests.

Read more
Backend

Posted on Apr 8, 2026 intermediate

The Transactional Outbox Pattern in Spring Boot

Build the transactional outbox pattern in Spring Boot with Kafka: atomic writes, a polling relay, and full integration tests with Testcontainers, all working.

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