Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các khung nhìn và bảng ánh xạ JPA có tính kế thừa

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.

Các mô hình gói
    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 đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql chọn giá trị hàng động làm tên cột, một cột khác làm giá trị

  2. Cần nối 2 bảng nhưng ngoại trừ một số hàng trong bảng khác trong MySQL

  3. Cách kiểm tra phiên bản MySQL của bạn

  4. Thứ tự Zend_Db theo trường Giá trị

  5. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException Chèn lỗi mysql