spring-boot-jdbc
Spring Boot JDBC
When to reach for this instead of JPA
Not a default choice — JPA/spring-boot-scaffold's layering is still the baseline for typical CRUD; see spring-boot-jpa for MySQL/PostgreSQL-specific JPA configuration once past the basics. Reach for direct JDBC when: the query is genuinely simple and an entity/repository layer adds no value, a bulk/batch operation needs precise control JPA doesn't give cleanly, or a stored procedure/complex reporting query doesn't map naturally to an entity graph. Don't drop to raw JDBC to "get better performance" without evidence — JPA's overhead is rarely the actual bottleneck (see spring-boot-review's N+1 guidance first). If the data isn't relational at all, neither this skill nor spring-boot-jpa is the right starting point — see spring-boot-mongodb.
JdbcClient — the modern default for new code (Spring Boot 4.x)
As of Spring Framework 6.1 (carried into Boot 4.x), JdbcClient is a unified fluent façade over JdbcTemplate and NamedParameterJdbcTemplate — one API instead of choosing between two, autoconfigured and ready to inject:
@Repository
public class OrderJdbcRepository {
private final JdbcClient jdbcClient;
public OrderJdbcRepository(JdbcClient jdbcClient) {
this.jdbcClient = jdbcClient;
}