Hibernate のドキュメントには、次のように記載されています。
5.1.6.5. 1 つのエンティティを複数のテーブルにマッピングする
新しいスキーマには推奨されませんが、一部のレガシー データベースでは、1 つのエンティティを複数のテーブルにマップする必要があります。
私はデータベースの正規化について多くのことを読みましたが、いくつかの異なるエンティティをマップし、奇妙な結合ステートメントを手動で実行しない限り、データベースを正規化し、複数のデータベーステーブルにエンティティをマップしない方法をよく理解していません。または、7 つの異なるエンティティをマッピングし、それらを 1 つの POJO に転送します。正規化され、単一のエンティティを使用してデータベース データから Java オブジェクトに変換する「新しいスキーマ」を開発する方法を示す場所はありますか?
また、今日の安価なストレージの世界では完全な正規化が必要ではないことも理解していますが、この声明は私が読んだ他のすべてのものと矛盾していることに気づきました. 正規化と非正規化のバランスを探していますが、Java Persistence API を使用した簡単な方法は見つかりませんでした。
編集:
例:
次のユーザーエンティティがある場合:
@Entity
public class User {
long id;
String name;
String email;
int countryCode;
List<Images> uploadedImages;
}
ユーザーの国名と画像のコレクションを同じテーブルに格納するのではなく、国を 1 つのテーブルに格納します。
Table Countries Country_Code Country_Name
AF Afghanistan etc....
国コードと国名を使用して、次に に、ユーザー ID を使用して別のテーブルに画像をアップロードし、
Table UploadedImages User_Id Image_Name Image_Url
1 Hello.jpg Amazon S3
1 Goodbye.jpg Photobucket
では、1 つのエンティティのみでこれを行うにはどうすればよいでしょうか。または、最初のエンティティからの情報を使用して、データベースから 3 つの個別のエンティティを取得する必要がありますか? おわかりのように、基本的なスキーマについて少し混乱しています。上記のデータを Java オブジェクトに変換するにはどうすればよいでしょうか?