現在のプロジェクト(Java)用にデータベースを計画/設計しています。このプロジェクトでは、Hibernateを使用します。
私のプロジェクトには、Commandという基本クラス/インターフェイスがあります。実際、CommandクラスにはフィールドID(一意)のみが含まれています。
public interface Command {
public int getId();
public void execute();
}
したがって、Commandのすべてのサブクラスに共通しているのは、一意のIDと、サブクラスによって実装されるexecuteというメソッドです。
MoveCommand、ResizeCommandなど、共通のデータフィールド(idを除く)を持たない多くのサブクラスが存在します。
例えば:
public class MoveCommand implements Command {
private int id;
private int oldX;
private int oldY;
private int newX;
private int newY;
public void execute() { ... }
public int getId(){return id; }
}
public class ResizeCommand implements Command {
private int id;
private int oldWidth;
private int oldHeight;
private int newWidth;
private int newHeight;
public int getId(){return id; }
public void execute() { ... }
}
次に、コマンドのリストを含むDocumentという別のクラスがあります。
public class Document {
private List<Command> commands;
}
そのため、基本クラス「selectfromCommand」の多くのクエリが実行時に実行されました。
私の質問は、この場合、最高のパフォーマンスを得るには、どのような継承戦略を使用する必要があるかということです。
SQLの場合:この場合、JOIN(サブクラスごとのテーブル)またはUNION(具象クラスごとのテーブル)のパフォーマンスは向上しますか?
誰かがこのトピックの経験がありますか?
サブクラスごとのテーブルがより良い(設計)ソリューションになると思いますが、コマンドに共通するのはそれだけであるため、単一の列(id)を持つデータベーステーブルが存在するため、それについてはよくわかりません。