《Spring Boot 高级》6.1 EntityManager 与持久化上下文
拆开 @PersistenceContext 注入的那个 EntityManager:它为什么是共享代理、如何绑定到当前事务,持久化上下文作为一级缓存怎样工作,实体的四种状态如何转换,以及 persist / merge / detach / refresh 各自的真实语义。
tag
拆开 @PersistenceContext 注入的那个 EntityManager:它为什么是共享代理、如何绑定到当前事务,持久化上下文作为一级缓存怎样工作,实体的四种状态如何转换,以及 persist / merge / detach / refresh 各自的真实语义。
列表接口几乎都要分页。本节讲清 Pageable、Page、Slice、Sort 四者的关系,贴真实 SQL 展示分页背后的 count 与数据两条语句,说明为什么不该直接暴露 Page 的 JSON、排序字段为何要白名单校验,并给出深分页的性能问题与 keyset 分页思路。
派生查询只能表达简单条件,复杂查询要靠 @Query。本节讲 JPQL 的语法要点与两种参数写法、@Modifying 批量更新、接口投影与类投影的取舍、nativeQuery 的适用场景与代价,以及 EntityManager、JdbcTemplate、查询超时与 JPQL 的能力边界。
图书、作者、分类之间天然存在关联。本节用图书服务演示 @OneToOne、@OneToMany、@ManyToOne、@ManyToMany 四种映射,讲清 mappedBy 与关系维护方、@JoinColumn 指定外键、级联与 orphanRemoval 的取舍,并用 show-sql 直观演示 N+1 问题。
Spring Data JPA 深度实战:关联映射、N+1 问题根治、批量操作、分页优化、二级缓存、QueryDSL 动态查询与 JPA vs MyBatis 选型。
Java EE/Jakarta EE 三大规范详解:CDI、JPA 与 Bean Validation 一、CDI:Contexts and Dependency Injection(上下文与依赖注入) 1.