为什么hibernate中有两种删除实体的方法?两者的工作风格相同。
Session.delete():实体必须处于持久状态。
delete()
操作无法删除分离的实体。在这种情况下,该 API 将抛出 IllegalArgumentException
。
Session.remove():Is 也可以在分离状态下工作,这意味着如果我们的实体处于分离状态,我们可以使用此方法。
对于每个
remove()
调用,hibernate 都会加载实体,执行生命周期转换到 REMOVED 并触发 SQL DELETE 操作。对 N 个实体执行 N 个不同的 SQL DELETE 查询将导致性能非常低下。使用 JPQL 查询删除此类实体列表通常会更好。