主な違いは、負荷が遅れているかどうかです。
ロードメソッドはすぐにデータベースにアクセスしません。レコードが読み込まれようとした場合、ロードメソッドは非初期化されたプロキシオブジェクトを返します。
メソッドを取得します
常にすぐにデータベースにアクセスしてください。レコードが読み込まれようとした場合、nullを直接返します
Hibernateには非常に似ている2つの方法があります。レビューした後、私は見つけました
Hibernateには2つの非常に類似した方法があります。Get()とLoad()。どちらも、指定されたエンティティクラスとIDを介してデータベースからデータを読み取り、対応するインスタンスを返すことができます。ただし、Hibernateはまったく同じ方法を2つ行いません。それらの違いは次のとおりです。
GETは、データベースを直接照会することです。見つからない場合、nullを返します。ロードは最初にメモリからロードされます。以前にロードまたはクエリになっていない場合は、データベースを照会します。
HibernateのGETメソッドとロードメソッドの根本的な違いは、Loadメソッドを使用する場合、Hibernateは、IDに対応するオブジェクト(データベースレコード)がデータベースに存在する必要があると考えているため、自信を持って使用でき、プロキシを使用してオブジェクトのロードを遅らせることができると考えています。データベースは、オブジェクト内の他の属性データが使用されている場合にのみクエリされますが、データベースにレコードが存在しない場合、方法はありません。例外のみをスローできます。ロードメソッドが例外をスローすることは、オブジェクトのデータを使用する場合、このオブジェクトを作成するときではなく、データがデータベースに存在しない場合に例外がスローされることを意味します。セッションのキャッシュは冬眠のための非常に安価なリソースであるため、ロードするときは最初にセッションキャッシュをチェックして、IDに対応するオブジェクトが存在するかどうかを確認します。存在しない場合は、プロキシが作成されます。したがって、IDがデータベースに対応するレコードが必要であることがわかっている場合は、ロード方法を使用して怠zyなロードを実現できます。 GETメソッドの場合、HibernateはIDに対応するデータが存在するかどうかを確認します。まず、セッションキャッシュを調べてから、セカンダリキャッシュを調べます。まだ完了していない場合は、データベースを調べてください。データベースで行われていない場合は、NULLを返します。
2. GETメソッドは、セッションキャッシュを最初に照会しますが、そうでない場合は、セカンダリキャッシュを照会し、最後にデータベースを照会します。それどころか、ロードメソッドが作成されると、セッションキャッシュが最初のクエリが作成され、エージェントが作成されていない場合、データが実際に使用される場合にのみ、セカンダリキャッシュとデータベースがクエリされます。
要するに、GetとLoadの根本的な違いのために、一言で言えば、Hibernateは、データがロード方法のためにデータベースに存在する必要があると考えており、プロキシを使用して自信を持って読み込みを遅らせることができます。使用中に問題が見つかった場合、例外のみを投げることができます。 GETメソッドの場合、Hibernateは実際のデータを取得する必要があります。そうしないと、nullを返します。
1.基準を満たす記録が見つからない場合、get()メソッドはnullを返します。 load()はobjectnotfoundecceptionを報告します。
2。Load()メソッドはエンティティのプロキシクラスインスタンスを返すことができ、get()は常にエンティティクラスのみを返します。
3. Load()メソッドは、セカンダリキャッシュと内部キャッシュの既存のデータを完全に使用できますが、get()メソッドは内部キャッシュでのみ検索します。対応するデータが見つからない場合、セカンダリキャッシュがスキップされ、SQLが直接呼び出されて検索を完了します。