4

どのような利点がgetありcreateQueryますか?

HQLを解析する必要がないため、パフォーマンスがわずかに向上する可能性があることがわかりますが、get over createQueryを使用することのその他の大きな利点はありますか?

4

2 に答える 2

5

まず、入力がはるかに速く、読みやすく、ID でエンティティを取得するという意図が明確に表現されています。また、HQL クエリでタイプミスが発生する可能性がありますが、エラーを起こすことは基本的に不可能です。

パフォーマンスに関する主な利点は、エンティティがまだセッション キャッシュにない場合にのみ select ステートメントを実行することです。毎回 HQL クエリが実行されます。また、第 2 レベルのキャッシュがあるget()場合、エンティティが既に第 2 レベルのキャッシュにある場合、クエリを完全に実行することを回避します。

于 2013-03-14T23:27:13.440 に答える
0

get()セッションを直接使用してオブジェクトを取得します。

  • get() は、オブジェクトをロードする場合、つまり SQL SELECT の場合にのみ役立ちます。
  • save() および persist() と同様に、SQL INSERT が発生し、delete() が SQL DELETE に、update() または merge() が SQL UPDATE に発生します。
  • コントロールが制限されており、抽出するエンティティを指定する必要があります。

createQuery() HQLを使用

  • HQL を使用すると、すべての CRUD クエリを記述できます。
  • HQL (SQL like) 句を指定できるように制御を強化します。
  • HQL は休止状態の独自のクエリ言語であり、休止状態プログラムで一括操作を実行するために使用されます。
  • オブジェクト指向の SQL は HQL と呼ばれます。
  • ここでは、HQL コマンドを取得するために、テーブルの列名を POJO クラス変数名に、テーブル名を POJO クラス名に置き換えます。
  • 他の選択肢で書くのが非常に難しい場合があります。HQL を使用すると、より迅速に実装できます。
于 2017-06-17T11:35:05.603 に答える