0

次のコードは、id=5のレコードをデータベースから削除することを知っています。

 Query query = session.createQuery("delete from Class where id = 5");
 query.executeUpdate();

ただし、削除する前に、このレコードのデータを変数に保存する必要があります。したがって、id = 5を選択し、いくつかのコードの後でそれを削除します。それらに2つの異なるクエリを使用すると、効率的ではありません。このようにして、データベースでこのアイテムを2回検索するためです。

query = session.createQuery("from Class where id = 5");
//somecode
query = session.createQuery("delete Class where id = 5");
...

だから私はこれを行うためのより効率的な方法が必要です、そしてそれをより良くします。

4

2 に答える 2

4

レコードを削除するためにクエリを作成する必要はありません。

query = session.createQuery("from Class where id = 5");
List list=query.list();
if(list.size()!=0)
 {
   ClassName obj = (ClassName)list.get(0);
   session.delete(obj);
  }
于 2012-07-04T10:42:36.567 に答える
3

HibernateにはSession.delete()メソッドがあります。削除するエンティティへの参照がすでにある場合に使用します。クエリは必要ありません。

これは、関連付けに構成された潜在的なカスケードにも適用されますが、削除クエリには適用されません。

于 2012-07-04T10:44:03.260 に答える