Tôi muốn chỉ định view
của bạn thực thể như một mối quan hệ 1-1 bên trong đối tượng mô hình của bạn với quyền truy cập chỉ đọc, nếu tất cả các bảng của bạn đều có đối tượng dạng xem tương ứng. Bạn có thể làm điều này chỉ bằng cách viết getters mà không có setters, vì việc kích hoạt bất kỳ loại tập hợp nào sau đó lưu sẽ chạy một truy vấn không thành công. Sử dụng kế thừa như vậy sẽ khiến bạn phải chỉ định tất cả các cột của mình trong một cấp và bạn sẽ không biết cột nào thuộc về bảng hoặc dạng xem nào.
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();
}
Việc gộp tất cả chúng lại với nhau trong đối tượng mô hình, loại đối tượng này sẽ đánh bại đối tượng có ORM ở đó ngay từ đầu, bởi vì bây giờ bạn sẽ phải viết rất nhiều mã mysql để phù hợp với chức năng CRUD cơ bản của ORM. Điều này sẽ là dư thừa về phía bạn.
Không sử dụng inhertiance ở đây để mở thừa kế như một tùy chọn thực tế nếu bạn chọn sử dụng nó sau này. Việc tham gia vào chế độ xem mọi lúc có thể không tốt cho hiệu suất, tất nhiên tùy thuộc vào việc các chế độ xem của bạn được viết tốt như thế nào, nhưng việc không có tất cả chúng trong cùng một đối tượng sẽ cho phép bạn linh hoạt hơn theo nghĩa đó.