Hibernateのテーブルのすべての行を削除するに最適な方法は何ですか?
コレクションを反復処理してsession.delete()
を呼び出すと、私の知る限りでは実行されません。
別のオプションsession.createQuery("delete ...")
を使用しても、永続コンテキストには影響しません。
より良いバリアントがない場合、これらのメソッドを使用する必要がありますか?
DELETE FROM enityName
問題は、休止状態をデータベースに任せるのではなく、休止状態を内部的に処理することにあります。したがって、クエリを送信しても内部カスケードはトリガーされないため、不整合/孤立が発生します。
パフォーマンスが非常に重要な場合(毎日ではないため、テーブルが切り捨てられる場合)、各カスケードに対して複数のHQL削除を行うことができます(つまり、カスケードを手動で処理します)。
テーブルの切り捨てにHQLを使用できます
public int hqlTruncate(String myTable){
String hql = String.format("delete from %s",myTable);
Query query = session.createQuery(hql)
return query.executeUpdate();
}
String stringQuery = "DELETE FROM tablename";
Query query = session.createQuery(stringQuery);
query.executeUpdate();