Saya akan menentukan view
Anda entitas sebagai hubungan satu ke satu di dalam objek model Anda dengan akses hanya baca, jika semua tabel Anda memiliki objek tampilan yang sesuai. Anda bisa melakukan ini hanya dengan menulis getter tanpa setter, karena menembakkan set apa pun lalu menyimpan akan menjalankan kueri yang gagal. Menggunakan warisan seperti ini akan mengunci Anda karena harus menentukan semua kolom Anda dalam satu tingkat, dan Anda tidak akan tahu kolom mana yang termasuk tabel atau tampilan mana.
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();
}
Menggabungkan mereka semua bersama-sama dalam objek model semacam mengalahkan objek yang memiliki ORM di sana sejak awal, karena sekarang Anda harus menulis banyak kode mysql agar sesuai dengan fungsionalitas dasar CRUD ORM. Ini akan menjadi redundansi di pihak Anda.
Tidak menggunakan warisan di sini membiarkan warisan terbuka sebagai opsi aktual jika Anda memilih untuk menggunakannya nanti. Bergabung ke tampilan setiap saat mungkin berdampak buruk untuk kinerja, tergantung pada seberapa baik pandangan Anda ditulis tentu saja, tetapi tidak memiliki semuanya dalam objek yang sama memungkinkan lebih banyak fleksibilitas dalam pengertian itu.