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

Bagaimana cara mengkonfigurasi boot Spring untuk bekerja dengan dua database?

*ToMany Collections malas secara default di Hibernate &JPA. Kesalahannya adalah karena Jackson mencoba membuat serial OneToMany ketika manajer entitas (alias sesi dalam hibernate-speak) ditutup. Oleh karena itu, koleksi malas tidak dapat diambil.

Spring Boot dengan JPA secara default menyediakan OpenEntityManagerInViewFilter untuk EM primer. Ini memungkinkan akses DB hanya-baca, tetapi, secara default hanya berfungsi untuk EM utama.

Anda memiliki 3 opsi:

1) Anda dapat menambahkan pengambilan gabungan, mis. Bagaimana cara kerja FetchMode di Spring Data JPA

2) Anda dapat menambahkan OpenEntityManagerInViewFilter untuk pengelola entitas non-utama dan menambahkannya ke konteks Anda.

Harap perhatikan bahwa ini menyiratkan tantangan, untuk setiap instans Bar dan Foo, aplikasi Anda akan kembali ke database untuk mengambil OneToMany. Ini adalah bagian yang tidak berfungsi untuk Bar, tetapi untuk Foo. Ini menyiratkan masalah skalabilitas (disebut masalah N + 1 oleh beberapa orang) karena untuk setiap foo dan bar, Anda menjalankan kueri tambahan, yang akan menjadi lambat untuk jumlah Foo dan Bar yang tidak sepele.

3) Alternatifnya adalah membuat koleksi Anda di Bar dan Foo bersemangat (lihat https://docs.Oracle.com/javaee/7/api/javax/persistence/OneToMany.html#fetch-- ) tetapi ini perlu dianalisis dengan cermat jika skalabilitas menjadi perhatian Anda.

Saya akan merekomendasikan opsi #1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. UTF-8 tidak berfungsi dalam bentuk HTML

  2. MySQLDumper:Alat Pencadangan Database MySQL Berbasis PHP dan Perl

  3. MySQL ERROR 1290 (HY000) --secure-file-priv option

  4. CodeIgniter 'MySQL telah Hilang'

  5. Masalah menambahkan dua kolom mysql dan mengembalikan total