sql >> Databasteknik >  >> RDS >> Mysql

JPA kartlägger vyer och tabeller med arv

Jag skulle ange din view entitet som en en-till-en-relation inuti ditt modellobjekt med skrivskyddad åtkomst, om alla dina tabeller har ett motsvarande vyobjekt. Du kan göra detta bara genom att skriva getters utan sättare, eftersom en misslyckad fråga körs om du avfyrar vilken typ av set och sedan sparar. Att använda arv som detta skulle låsa dig till att behöva ange alla dina kolumner på en nivå, och du kommer inte att veta vilka kolumner som hör till vilka tabeller eller vyer.

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

Att klumpa ihop dem alla i modellobjektet besegrar liksom syftet med att ha ORM där i första hand, för nu kommer du att behöva skriva mycket mysql-kod för att matcha ORM:s grundläggande CRUD-funktionalitet. Detta skulle vara överflöd från din sida.

Att inte använda arv här lämnar arv öppet som ett faktiskt alternativ om du skulle välja att använda det senare. Att gå med i vyn varje gång kan vara dåligt för prestandan beroende på hur väl dina åsikter är skrivna, men att inte ha dem alla i samma objekt ger mer flexibilitet i den meningen.




  1. Laravel Carbon Group per månad

  2. PostgreSQL är världens bästa databas

  3. Mina favoritpostgreSQL-tillägg - del ett

  4. PHP, MySQL - kan du skilja mellan matchade rader och rader som påverkas?