私は休止状態でローカリゼーションを行おうとしていますが、@ElementCollection (埋め込みマップでの HQL 選択を参照) に行き詰まっているため、実際のエンティティを使用して別のアプローチを試してみたいと思います:
@Entity
public class Category {
..
@OneToMany(fetch = FetchType.EAGER)
@Cascade(...)
List<Localization> name;
}
@Entity
public class Localization {
@Id
@GeneratedValue
private long id;
@NotNull
public String locale;
@NotNull
public String label;
}
実際にはカテゴリに複数の英語の翻訳を許可するため、これはあまり良くないことはわかっていますが、それは私にとっては問題ありません。
私の質問:
データベース全体でこのようなローカライズ可能な構成を使用し、ローカライズされた日付がかなり多くなるため、ローカライズ テーブルが非常に大きくなります。ローカライズされたリレーションを熱心に取得したいので、これはパフォーマンスの問題になる可能性があります。
ManyToOne マッピングごとに個別のテーブルを作成することは可能ですか (したがって、基本的には @ElementCollection によって暗黙的に行われますが、これは使用できません。上記のリンクを参照してください)。したがって、結果は次のような同一の構造を持つ多くのテーブルになるはずです。
locale_category_name (id : long, locale : string, label : string)
locale_category_description (id : long, locale : string, label : string)
locale_product_name (id : long, locale : string, label : string)
等