Mysql
 sql >> база данни >  >> RDS >> Mysql

JPA картографски изгледи и таблици с наследяване

Бих посочил вашия view обект като връзка едно към едно във вашия обект на модела с достъп само за четене, ако всичките ви таблици имат съответен обект на изглед. Можете да направите това просто като напишете getters без сетери, тъй като задействането на всякакъв вид набор след това запазването ще изпълни неуспешна заявка. Използването на наследяване като това би ви заключило, че трябва да посочите всичките си колони на едно ниво и няма да знаете кои колони принадлежат на кои таблици или изгледи.

    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();
    }

Обединяването им заедно в обекта на модела някак побеждава обекта да има ORM там на първо място, защото сега ще трябва да напишете много mysql код, за да съответства на основната CRUD функционалност на ORM. Това би било съкращаване от ваша страна.

Неизползването на наследяване тук оставя наследяването отворено като действителна опция, ако изберете да го използвате по-късно. Присъединяването към изгледа всеки път може да е лошо за производителността в зависимост от това колко добре са написани изгледите ви, разбира се, но липсата на всички в един и същи обект позволява по-голяма гъвкавост в този смисъл.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mariadb конектор J Aurora Бързо внедряване при отказ

  2. Актуализирайте само Time в поле DateTime на mysql

  3. Получих грешка „невалиден брой повторения“ от регулярния израз

  4. MySQL код за грешка 1235

  5. Използване на две обобщени стойности от подзаявка SELECT в една външна заявка SELECT