1

現在のプロジェクト(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)を持つデータベーステーブルが存在するため、それについてはよくわかりません。

4

1 に答える 1