Бих посочил вашия view
обект като връзка едно към едно във вашия обект на модела с достъп само за четене, ако всичките ви таблици имат съответен обект на изглед. Можете да направите това просто като напишете getters без сетери, тъй като задействането на всякакъв вид набор след това запазването ще изпълни неуспешна заявка. Използването на наследяване като това би ви заключило, че трябва да посочите всичките си колони на едно ниво и няма да знаете кои колони принадлежат на кои таблици или изгледи.
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 там на първо място, защото сега ще трябва да напишете много mysql код, за да съответства на основната CRUD функционалност на ORM. Това би било съкращаване от ваша страна.
Неизползването на наследяване тук оставя наследяването отворено като действителна опция, ако изберете да го използвате по-късно. Присъединяването към изгледа всеки път може да е лошо за производителността в зависимост от това колко добре са написани изгледите ви, разбира се, но липсата на всички в един и същи обект позволява по-голяма гъвкавост в този смисъл.