IDが与えられているが、それがどのドメインクラスに属しているかがわからない場合、どのようにロードすればよいですか?
アプリの各ドメインクラスに対してget()を一度に1つずつテストできますが、コードの管理が難しく、非効率的です。別の方法はありますか?
IDが与えられているが、それがどのドメインクラスに属しているかがわからない場合、どのようにロードすればよいですか?
アプリの各ドメインクラスに対してget()を一度に1つずつテストできますが、コードの管理が難しく、非効率的です。別の方法はありますか?
はい、唯一の方法があります。ドメインが見つかるまで、各ドメインをget()してみてください。
ところで、異なるドメインはまったく同じIDを持つことができます(構成によって異なります)。
他の人が言っているように、IDだけで多くのことをするのはかなり難しいです。あなたが持っている唯一の本当の選択肢は、そのIDを持つ各ドメインクラスを取得しようとすることですが、他の人も言及しているように、そのIDを持つインスタンスを持つ複数のドメインクラスが存在する可能性があります。
ありがたいことに、アプリケーション内のすべてのドメインクラスを取得し、を使用してそれらをループするのはかなり簡単application.domainClasses
です。
文脈をよく知らなければ、何かを提案するのはもっと難しいでしょう。idを返したインスタンスにアクセスできる場合は、クラスを見つけて、そのクラスを使用してget()を実行できる可能性があります。
IDにある種の「メタデータ」を追加できます。
たとえば、BookとAuthorの2つのドメインクラスがあるとします。データベースでは、そのテーブルのIDの2つのシーケンスを作成します。1つは100000〜199999の範囲で、もう1つは200000〜299999の範囲です。
これで、IDを取得したら、範囲を確認して、それがどのドメインオブジェクトであるかを確認できます。すべてのドメインクラスを調べてget()を呼び出すよりも高速になります。特に、積極的に読み込みを行うコレクションを取得した場合はなおさらです。
ただし、短所は、この範囲を何らかの方法で管理し、常にそれらについて覚えて、シーケンスで空きIDが不足する状況をカバーする必要があることです。