Pertanyaan Beberapa file impor SQL di Spring Boot


Pergi dengan Referensi referensi Spring Boot, ada beberapa cara di mana kita dapat mengimpor data saat memulai suatu aplikasi. Dikombinasikan dengan database dalam memori, ini agak berguna untuk pengujian.

Pilihannya adalah untuk membuat file bernama import.sql, yang akan diambil oleh Hibernate, atau untuk membuat file bernama data.sql, yang akan diambil oleh Spring JDBC. Kedua hal ini berfungsi dengan baik untuk saya.

Namun, saya suka memecah proyek-proyek saya sedikit, jadi saya saat ini memiliki model domain inti, di mana ada beberapa impor berguna untuk mengkonfigurasi data inti seperti beberapa pengguna, yang digunakan di mana-mana. Saya juga memiliki proyek-proyek yang berfungsi khusus di mana berguna untuk menggunakan kembali data base yang sama, tetapi juga mengimpor beberapa data tambahan yang khusus untuk fungsi itu.

Di sinilah segala sesuatunya tidak berjalan dengan baik.

saya menemukan jawaban atas pertanyaan sebelumnya, di mana Pascal Thivent menyebutkan bahwa hibernate.hbm2ddl.import_files properti dapat digunakan untuk menentukan daftar file, seperti Hibernate 3.6.0.Beta1. Mengingat bahwa proyek saya mengimpor 4.3.1. Akhir, saya berpikir bahwa mungkin ini akan tersedia.

Jadi saya mencoba menambahkan yang berikut ke Spring Boot saya application.properties:

spring.jpa.hibernate.hbm2ddl.import_files=/another-import.sql

dan:

hibernate.hbm2ddl.import_files=/another-import.sql

Sayangnya, keduanya tidak akan menyebabkan impor berjalan.

Jadi saya bertanya-tanya apakah saya baru saja mengacaukan properti di atas (kemungkinan besar). Atau ada hal lain yang harus saya lakukan?

Perhatikan bahwa sebagai solusi, saya melihat bahwa Spring JDBC tampaknya berjalan data.sql setelah Hibernate berjalan import.sql. Jadi selama saya tidak membutuhkan lebih dari dua impor, saya bisa menggunakannya import.sql untuk data dasar dan kemudian memasukkan impor khusus proyek di data.sql. Saya bisa bertahan dengan ini, tetapi itu tidak benar-benar solusi.


32
2017-07-01 10:40


asal


Jawaban:


Jika Anda benar-benar ingin menggunakan prefiks properti hibernate dengan spring.jpa.properties. seperti yang ditambahkan sebagaimana properti pada EntityManagerFactory. Lihat sini dalam panduan referensi Spring Boot.

spring.jpa.properties.hibernate.hbm2ddl.import_files=file1.sql,file2.sql

Namun Anda juga bisa menggunakan spring.datasource.data dan spring.datasource.schema properti untuk keuntungan Anda. Mereka default untuk masing-masing data dan schema. Seperti yang Anda lihat di DataSourceInitializer kelas. Anda juga dapat mengaturnya dan mereka mengambil daftar sumber daya yang dipisahkan koma.

spring.datasource.data=classpath:/data-domain.sql,file:/c:/sql/data-reference.sql,data-complex.sql

Ini menjadi lebih baik karena pemuatan sumber daya juga memungkinkan memuat sumber daya dengan pola gaya semut.

spring.datasource.data=/META-INF/sql/init-*.sql
spring.datasource.schema=/META-INF/sql/schema-*.sql 

35
2017-07-01 12:12