Rumah  >  Soal Jawab  >  teks badan

java - Apabila aplikasi web yang dibina menggunakan Springboot sedang berjalan, bolehkah jadual pangkalan data dijana dan digunakan secara automatik?

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.

Saya tidak pernah membuat pembangunan web sebelum ini, dan saya tidak tahu banyak tentang pangkalan data, jadi apa yang saya akan katakan di bawah, jika terdapat sebarang situasi yang tidak realistik atau kaedah pelaksanaannya tidak baik, saya harap anda akan memberi saya sedikit nasihat, terima kasih! !

2. Keperluan yang ingin anda penuhi:

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.

Seperti yang ditunjukkan dalam gambar


3. Kesukaran yang saya hadapi pada masa ini ialah:

(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.

4. Idea lain

Saya telah memikirkan untuk meletakkan maklumat semua pelajar dari beberapa sekolah dalam jadual, dan kemudian menambahkan medan "sekolah" dalam jadual itu untuk menandakan sekolah mana pelajar itu berasal, tetapi saya takut apabila jumlah data menjadi besar , Pelbagai masalah mungkin timbul apabila menggunakan jadual ini.

5 Apa yang saya katakan mungkin agak bertele-tele, terima kasih kerana membacanya dengan teliti, saya harap anda boleh memberi saya nasihat, terima kasih!

仅有的幸福仅有的幸福2684 hari yang lalu1351

membalas semua(1)saya akan balas

  • 学习ing

    学习ing2017-07-05 10:48:15

    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

    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=root
    
    # 1
    spring.jpa.properties.hibernate.hbm2ddl.auto=update
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
    
    # 2
    spring.jpa.show-sql=true

    storan skrip sql

    balas
    0
  • Batalbalas