Ik zou je view
specificeren entiteit als een één-op-één relatie binnen uw modelobject met alleen-lezen toegang, als al uw tabellen allemaal een bijbehorend weergaveobject hebben. Je zou dit kunnen doen door getters te schrijven zonder setters, omdat het afvuren van een willekeurige set en het opslaan een mislukte query zal uitvoeren. Als u op deze manier overerving zou gebruiken, zou u ervoor zorgen dat u al uw kolommen op één niveau moet specificeren en weet u niet welke kolommen bij welke tabellen of weergaven horen.
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();
}
Als je ze allemaal samenvoegt in het modelobject, verslaat het doel om de ORM daar in de eerste plaats te hebben, omdat je nu veel mysql-code moet schrijven om overeen te komen met de basis CRUD-functionaliteit van de ORM. Dit zou redundantie van uw kant zijn.
Als u hier geen overerving gebruikt, blijft overerving open als een echte optie, mocht u ervoor kiezen om het later te gebruiken. Elke keer deelnemen aan de weergave kan slecht zijn voor de prestaties, afhankelijk van hoe goed je weergaven zijn geschreven natuurlijk, maar als je ze niet allemaal in hetzelfde object hebt, is er in die zin meer flexibiliteit.