1. Mari kita bercakap tentang premis dahulu:
Aplikasi spring yang dibina menggunakan but spring
Hibernate digunakan, dan spring-boot-starter-data-jpa
Pangkalan data ialah MySql; ialah IDEA.
Sebagai contoh,
Saya perlu memasukkan maklumat beberapa pelajar dari pelbagai sekolah dalam pangkalan data ini.
Jumlah data boleh menjadi sangat besar dan saya tidak mahu meletakkan begitu banyak maklumat pelajar dalam jadual yang sama.
Idea saya ialah
setiap sekolah mempunyai "jadual maklumat pelajar sekolah XX" (tbl_School_XX, seperti "tbl_School_01"), dan kemudian masukkan maklumat pelajar di sekolah itu ke dalam jadual itu.
Gunakan jadual indeks sekolahnya sendiri (tbl_School_Index Jadual ini mempunyai medan indeks (seperti indeks) untuk menyimpan nama jadual setiap sekolah (seperti "tbl_School_01").
·Apabila anda ingin memasukkan maklumat pelajar dari sekolah baharu, apabila menambah sekolah, aplikasi akan menjana "Jadual Maklumat Pelajar Sekolah XX" baharu secara automatik dan aplikasi akan menamakan jadual secara automatik (seperti "tbl_School_01"). Gunakan jadual baharu ini untuk menyimpan maklumat tentang pelajar di sekolah baharu. Pada masa yang sama, nama jadual ini juga akan ditambahkan pada medan indeks (indeks) jadual indeks sekolah (tbl_School_Index).
·Apabila anda ingin membaca maklumat pelajar atau apabila anda ingin memasukkan maklumat pelajar baharu dari sekolah sedia ada, data dalam medan indeks (indeks) (seperti "tbl_School_01") akan ditemui daripada jadual indeks sekolah (tbl_School_Index ), dan kemudian Baca/tulis jadual tbl_School_01.
(1) Saya tahu bahawa pangkalan data hubungan tidak membenarkan jadual dalam jadual, jadi saya menghasilkan kaedah sedemikian, saya tidak tahu sama ada ia boleh dilaksanakan atau sesuai.
(2) Apabila saya mencipta kelas entiti baharu (@Entity), selepas mengkonfigurasi atribut dan mendapatkan/menetapkan kaedah, menjalankan aplikasi akan menjana jadual yang sepadan dalam pangkalan data, tetapi saya tidak perlu menjana jadual itu; sekolah ditambah, jadual yang sepadan dengan kelas entiti itu dijana secara dinamik.
Apabila anda ingin memasukkan maklumat pelajar dari sekolah baharu, apabila menambah sekolah, aplikasi akan menjana "Jadual Maklumat Pelajar Sekolah XX" baharu secara automatik, dan aplikasi akan menamakan jadual secara automatik (seperti "tbl_School_01"), gunakan jadual baharu ini Untuk menyimpan maklumat pelajar di sekolah baharu. Pada masa yang sama, nama jadual ini juga akan ditambahkan pada medan indeks (indeks) jadual indeks sekolah (tbl_School_Index).
Pertama sekali, berdasarkan penerangan semasa anda (huraian semasa tidak melibatkan beberapa operasi yang memerlukan operasi meja silang), kaedah ini boleh dilaksanakan Apabila menambah pelajar, jika sekolah tidak wujud, anda perlu memasukkan indeks sekolah dan buat jadual baru yang berkaitan. Ini boleh dicapai dengan kod (ini tanpa memulakan semula aplikasi, saya tidak tahu jika ia boleh dicapai menggunakan konfigurasi saya tahu.
(2) Apabila saya mencipta kelas entiti baharu (@Entity), selepas mengkonfigurasi atribut dan mendapatkan/menetapkan kaedah, menjalankan aplikasi akan menghasilkan jadual yang sepadan dalam pangkalan data, tetapi saya tidak perlu menjana jadual itu; sekolah ditambah, jadual yang sepadan dengan kelas entiti itu dijana secara dinamik.
Apa yang anda bincangkan di sini ialah aplikasi boleh dimulakan semula Jika aplikasi boleh dimulakan semula, data boleh dimasukkan melalui konfigurasi dan jadual boleh dibuat secara automatik. Anda perlu mengkonfigurasi hibernate dan meletakkan skrip SQL yang sepadan di bawah sumber.
Konfigurasi hibernate dalam application.properties
storan skrip sql