常见问题:
在使用 Spring Data JPA 的 `save()` 方法时,开发者常误以为“方法成功返回即代表数据已写入数据库”,从而忽略持久化实际状态。实际上,`save()` 仅将实体纳入一级缓存(Persistence Context),若未触发 flush(如事务未提交、未调用 `flush()` 或未发生自动 flush 时机),数据可能仍滞留在内存中,未真正落库。尤其在非事务方法、`@Transactional(propagation = NOT_SUPPORTED)` 或手动管理 `EntityManager` 场景下,`save()` 后立即查询数据库可能查不到刚保存的数据;更严重的是,即使数据库因唯一约束失败,若异常被静默捕获或事务未传播,也可能掩盖持久化失败。此外,`save()` 返回的实体主键虽可能已被生成(如 `@GeneratedValue(strategy = IDENTITY)` 需执行 INSERT 才获取),但该 INSERT 是否成功仍需结合事务边界与异常处理来验证。因此,仅依赖 `save()` 的返回值或无异常抛出,**无法准确判断数据是否真正持久化成功**。