JPA(この場合はEclipselink)は、エンティティがリストを持っている場合、常にIndirectListを返しますか?そのリストは大丈夫ですか、それとも別のリスト(おそらくリンクリスト)に変換する必要がありますか?
2 に答える
分析
EclipseLinkのIndirectListのAPIを見ると、次のようになっています。
IndirectListを使用するには:タイプIndirectList(jdk1.1)またはCollection / List / Vector(jdk1.2)で適切なインスタンス変数を宣言します。
TopLinkは、含まれているドメインオブジェクトがデータベースから読み取られるときに、インスタンス変数にIndirectListを配置します。IndirectListに送信された最初のメッセージで、コンテンツがデータベースからフェッチされ、通常のコレクション/リスト/ベクターの動作が再開されます。
IndirectListソースを表示すると、APIが言うように、すべての作業が元のコレクションに委任されていることがわかります。
回答
JPA(この場合はEclipselink)は、エンティティがリストを持っている場合、常にIndirectListを返しますか?
はい、常にIndirectListでラップされた指定のコレクションを返します。すべての内部作業をラップされたコレクションに委任するため、動作方法が維持されます。
そのリストは大丈夫ですか、それとも別のリスト(おそらくリンクリスト)に変換する必要がありますか?
はい、IndirectListを使用しても問題ありません。変換せず、必要なタイプのコレクションを定義するだけで、IndirectListは透過的に管理されるため、心配する必要はありません。
はインターフェースであるためList
、JPAプロバイダーは任意の実装を自由に返すことができます。EclipseLinkはIndirectList
、aList
が使用されている場所を再生します。IndirectList
はであるため、これは完全に問題ありませんList
。
記録または将来の参照のために、JPAとのインターフェースを使用することが一般的にベストプラクティスです。