Jeg vil angive din view
enhed som en en-til-en relation inde i dit modelobjekt med skrivebeskyttet adgang, hvis alle dine tabeller alle har et tilsvarende visningsobjekt. Du kan gøre dette blot ved at skrive gettere uden sættere, da affyring af enhver form for sæt og derefter gemme vil køre en fejlagtig forespørgsel. Brug af arv som denne ville låse dig til at skulle angive alle dine kolonner på ét niveau, og du vil ikke vide, hvilke kolonner der hører til hvilke tabeller eller visninger.
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();
}
At samle dem alle sammen i modelobjektet besejrer på en måde formålet med at have ORM der i første omgang, for nu bliver du nødt til at skrive en masse mysql-kode for at matche ORM's grundlæggende CRUD-funktionalitet. Dette ville være redundans fra din side.
Hvis du ikke bruger arv her, er arv åben som en reel mulighed, hvis du vælger at bruge den senere hen. At deltage i visningen hver gang kan være dårligt for ydeevnen, afhængigt af hvor godt dine visninger er skrevet, selvfølgelig, men ikke at have dem alle i det samme objekt giver mulighed for mere fleksibilitet i den forstand.