Upřesnil bych váš view
entitu jako vztah jedna ku jedné uvnitř vašeho objektu modelu s přístupem pouze pro čtení, pokud všechny vaše tabulky mají odpovídající objekt zobrazení. Můžete to udělat jednoduše napsáním getterů bez setterů, protože vypálením libovolné sady a následným uložením se spustí neúspěšný dotaz. Použitím dědičnosti, jako je tato, byste se dostali do toho, že budete muset zadat všechny sloupce na jedné úrovni a nebudete vědět, které sloupce patří ke kterým tabulkám nebo zobrazením.
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();
}
Shrnutí všech dohromady v modelovém objektu tak trochu maří cíl mít tam ORM, protože nyní budete muset napsat spoustu mysql kódu, aby odpovídal základní funkcionalitě CRUD ORM. To by byla z vaší strany redundance.
Pokud zde nepoužijete dědičnost, ponecháte dědičnost otevřenou jako skutečnou možnost, pokud se rozhodnete ji použít později. Pokaždé připojení k pohledu může být špatné pro výkon v závislosti na tom, jak dobře jsou vaše pohledy napsány, samozřejmě, ale to, že je nemáte všechny ve stejném objektu, umožňuje v tomto smyslu větší flexibilitu.