Hibernate によってマップされたクライアント テーブルと 1 対 1 の関係を持つ多くのテーブルがあります。
スレッドを使用してこれらの各テーブルを選択した後、一意のクライアントのファイルを作成する必要があります。
これらの各テーブル (請求書、サービスなど) もファイルに含まれますが、クライアントのリストの後に含まれます (政府の要件、理由は聞かないでください...)。
これを行うには、次の 3 つの方法を考えました。
方法 1: HashSet を使用する
選択するたびに Client オブジェクトを HashSet に追加します。残念ながら、このソリューションはスケーラブルではありません。テーブル B には何百万もの一意のレコードが含まれる可能性があり、OutOfMemory エラーが発生する可能性があります。
方法 2: ビューを使用する
テーブルを結合するビューを作成することもできます。問題は、これらの選択には多くの複雑なルールがあり、頻繁に変更されることです。プログラムとビューを変更する必要があるため、メンテナンスは悪夢です。
方法 3: 一時テーブルを使用する
各テーブルで見つかった Client オブジェクトを格納する一時テーブルを作成し、そのテーブルで選択を実行できます。
これまでのところ、方法 3 が最善の解決策のようですが、これを行うためのより良い方法があるかどうか疑問に思っていました。どうすればデザインを改善できますか?