しばらくの間、JPA を使用するときに、なぜ次のような削除メソッドを作成する必要があるのか疑問に思っていました。
@Transactional
public void delete(Account account)
{
if (entityManager.contains(account))
{
entityManager.remove(account);
}
else
{
entityManager.remove(entityManager.merge(account));
}
}
トランザクションはこのメソッドで開始および終了するため、contains は必要ないのかもしれませんが、remove で管理されていないオブジェクトだけを取得できなかったのはなぜなのか疑問に思っています。そのオブジェクトのIDを知るために管理する必要があるからですか? 他の洞察を聞くのは素晴らしいことです。JPA削除の方法と理由を理解したいだけです。