Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Widoki mapowania JPA i tabele z dziedziczeniem

Określiłbym Twój view jednostka jako relacja jeden do jednego wewnątrz obiektu modelu z dostępem tylko do odczytu, jeśli wszystkie tabele mają odpowiedni obiekt widoku. Możesz to zrobić po prostu pisząc gettery bez seterów, ponieważ uruchomienie dowolnego zestawu, a następnie zapisanie spowoduje uruchomienie nieudanego zapytania. Korzystanie z takiego dziedziczenia zablokowałoby Cię w konieczności określenia wszystkich kolumn na jednym poziomie i nie będziesz wiedział, które kolumny należą do których tabel lub widoków.

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

Umieszczenie ich wszystkich razem w obiekcie modelu w pewnym sensie niweluje cel posiadania tam ORM-a, ponieważ teraz będziesz musiał napisać dużo kodu mysql, aby pasował do podstawowej funkcjonalności ORM-a CRUD. To byłaby redundancja po twojej stronie.

Nieużywanie tutaj dziedziczenia pozostawia otwartą opcję dziedziczenia, jeśli zdecydujesz się użyć go później. Dołączanie do widoku za każdym razem może mieć negatywny wpływ na wydajność, w zależności od tego, jak dobrze są napisane Twoje widoki, ale nie posiadanie ich wszystkich w tym samym obiekcie pozwala na większą elastyczność w tym sensie.




  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:czy można 'SUM JEŻELI' lub 'LICZ JEŻELI'?

  2. varchar(20) i varchar(50) są takie same?

  3. Wybierz konkretną kolumnę z konkretnego wiersza za pomocą starego interfejsu API mysql_*

  4. importuj zdalną bazę danych do localhost

  5. Jak uzyskać dane JSON z php i wyświetlić je w widoku tekstowym w Androidzie?