クラスC1、C2、..、Cn(n〜100)がたくさんあります。各クラスには、他のクラス (子) への参照があります。ただし、1 つのクラスが異なるクラスで参照される可能性があります (子は異なる型の親を持つことができます)。たとえば、C1 は、C2、C3、C4 という子を持つことができます。ただし、C2 は C4 の子になることもできます。
class C1 extends AbstractEntity{
C2 c2;
C3 c3;
C4 c4;
}
class C4 extends AbstractEntity {
C2 c2;
C5 c5;
}
エンティティを持っているので、その親を取得したいです。だから私は AbstractEntity クラスを作成します
class abstract AbstractEntity{
Long id;
AbstractEntity parent;
}
オブジェクトをデータベースに永続化するために Hibernate で JPA アノテーションを使用している場合。したがって、次の AbstractEntity テーブルを取得します。
table AbstractEntity (id long primary key, parent_id long foreign key references AbstractEntity(id), discriminator varchar(40));
具体的なエンティティ (追加、更新、削除) を使用して操作を実行するには、AbstractEntity との結合が実行されます。操作ごとに!したがって、すべての操作で同じテーブルにアクセスする必要があります。これはパフォーマンスにどのように影響しますか?これにより、異なる種類のリソースに対して同時に操作を実行できますか? それらはブロックされませんか?
トランザクション中にテーブル全体がロックされるわけではなく、これは使用される DBMS に大きく依存することを理解しています。しかし、一般的には、hibernate を使用する場合、大量の子クラスに対して共通のスーパー クラスを取り除く方法を検討する方がよいでしょうか? DBMS が本当に重要な場合は、MySQL と Oracle にしましょう。