0

hibernateは初めてです。オブジェクトの主キー値があり、DBからオブジェクトをロードする必要があります。get()またはload()を使用するか、基準APIを使用して、オブジェクトをロードできることを読みました。

どちらをどの条件で使用するのが良いのか、少し混乱しています。誰かが私を案内してもらえますか?

4

1 に答える 1

1

Session.get()オブジェクトがすでにセッションにあるかどうかを確認します。そうであれば、それを返します。そうでない場合は、select ステートメントを実行して、セッション内のオブジェクトの状態をロードし、それを返します。これは、デフォルトで使用する必要がある方法です。

Session.load()オブジェクトがすでにセッションにあるかどうかを確認します。そうであれば、それを返します。そうでない場合は、初期化されていないプロキシを作成し、プロキシを返します。データベースにもヒットしません。プロキシで呼び出される最初のメソッドは、Hibernate にデータベースからオブジェクトの状態をロードさせ、プロキシを初期化します。通常、このメソッドは、既存のオブジェクトへの参照が必要な場合 (たとえば、1 対 1 の関連付けを初期化する場合) に使用します。

Criteria クエリまたは HQL クエリは、常にデータベースに対してクエリを実行します。と同じことをするためにそれを使用することはありませんSession.get()。オブジェクトを主キーでロードし、それ以外の場合は を使用して遅延ロードされる関連付けを初期化すると便利ですSession.get()。すべてのコースを含む学生が必要であることがわかっている場合は、1 つのクエリで学生をロードし、2 つ目のクエリでコースをロードするよりも、1 つのクエリですべてをロードすることをお勧めします。

于 2012-07-22T11:32:40.210 に答える