Określiłbym Twój view
jednostka jako relacja jeden do jednego wewnątrz obiektu modelu z dostępem tylko do odczytu, jeśli wszystkie tabele mają odpowiedni obiekt widoku. Możesz to zrobić po prostu pisząc gettery bez seterów, ponieważ uruchomienie dowolnego zestawu, a następnie zapisanie spowoduje uruchomienie nieudanego zapytania. Korzystanie z takiego dziedziczenia zablokowałoby Cię w konieczności określenia wszystkich kolumn na jednym poziomie i nie będziesz wiedział, które kolumny należą do których tabel lub widoków.
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();
}
Umieszczenie ich wszystkich razem w obiekcie modelu w pewnym sensie niweluje cel posiadania tam ORM-a, ponieważ teraz będziesz musiał napisać dużo kodu mysql, aby pasował do podstawowej funkcjonalności ORM-a CRUD. To byłaby redundancja po twojej stronie.
Nieużywanie tutaj dziedziczenia pozostawia otwartą opcję dziedziczenia, jeśli zdecydujesz się użyć go później. Dołączanie do widoku za każdym razem może mieć negatywny wpływ na wydajność, w zależności od tego, jak dobrze są napisane Twoje widoki, ale nie posiadanie ich wszystkich w tym samym obiekcie pozwala na większą elastyczność w tym sensie.