view
を指定します すべてのテーブルに対応するビューオブジェクトがある場合、読み取り専用アクセス権を持つモデルオブジェクト内の1対1の関係としてのエンティティ。これは、セッターなしでゲッターを作成するだけで実行できます。任意の種類のセットを起動してから保存すると、失敗したクエリが実行されるためです。このように継承を使用すると、1つのレベルですべての列を指定する必要がなくなり、どの列がどのテーブルまたはビューに属しているかがわかりません。
Table.java
package models;
// relevant imports
@entity("table")
public class Table{
@OneToOne(mappedBy = "table")
private View view;
public string getVariable();
public string setVaraible();
}
View.java
package models;
// relevant imports
@entity("view")
public class View{
@OneToOne
@JoinColumn(name = "table_id")
private Table table;
public string getVariable();
public string getVariable2();
public string getVariable3();//etc, No setters.
//alternatively use insertable//updateable=false on all column annotation
@Column(name="variable_4", insertable = false, updateable=false)
public string getVariable4();
}
それらをすべてモデルオブジェクトにまとめると、最初にORMをそこに置くというオブジェクトが無効になります。これは、ORMの基本的なCRUD機能に一致するように大量のmysqlコードを作成する必要があるためです。これはあなたの側の冗長性になります。
ここで継承を使用しないと、後で継承を使用することを選択した場合に、実際のオプションとして継承が開いたままになります。もちろん、ビューがどれだけうまく書かれているかによっては、毎回ビューに参加するとパフォーマンスが低下する可能性がありますが、すべてを同じオブジェクトに含めないことで、その意味での柔軟性が高まります。