Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tampilan pemetaan JPA dan tabel dengan warisan

Saya akan menentukan view Anda entitas sebagai hubungan satu ke satu di dalam objek model Anda dengan akses hanya baca, jika semua tabel Anda memiliki objek tampilan yang sesuai. Anda bisa melakukan ini hanya dengan menulis getter tanpa setter, karena menembakkan set apa pun lalu menyimpan akan menjalankan kueri yang gagal. Menggunakan warisan seperti ini akan mengunci Anda karena harus menentukan semua kolom Anda dalam satu tingkat, dan Anda tidak akan tahu kolom mana yang termasuk tabel atau tampilan mana.

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

Menggabungkan mereka semua bersama-sama dalam objek model semacam mengalahkan objek yang memiliki ORM di sana sejak awal, karena sekarang Anda harus menulis banyak kode mysql agar sesuai dengan fungsionalitas dasar CRUD ORM. Ini akan menjadi redundansi di pihak Anda.

Tidak menggunakan warisan di sini membiarkan warisan terbuka sebagai opsi aktual jika Anda memilih untuk menggunakannya nanti. Bergabung ke tampilan setiap saat mungkin berdampak buruk untuk kinerja, tergantung pada seberapa baik pandangan Anda ditulis tentu saja, tetapi tidak memiliki semuanya dalam objek yang sama memungkinkan lebih banyak fleksibilitas dalam pengertian itu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Regresi linier, menemukan kemiringan di MySQL

  2. Bagaimana saya bisa mengembalikan data boxplot numerik dari semua hasil menggunakan 1 kueri mySQL?

  3. Permintaan untuk mengetahui hari Sabtu kedua setiap bulan dalam setahun

  4. Bagaimana cara menggunakan variabel dalam pernyataan siap untuk kueri sql?

  5. Objek MySQLConverter' tidak memiliki pengecualian atribut '_tuple_to_mysql' dengan konektor mysql