Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để cấu hình khởi động Spring để làm việc với hai cơ sở dữ liệu?

* Theo mặc định, các Bộ sưu tập của ToMany không hoạt động ở chế độ Hibernate &JPA. Lỗi là do Jackson đang cố gắng tuần tự hóa OneToMany khi trình quản lý thực thể (còn gọi là phiên trong chế độ ngủ đông) bị đóng. Do đó, không thể truy xuất bộ sưu tập lười biếng.

Spring Boot với JPA theo mặc định cung cấp một OpenEntityManagerInViewFilter cho EM chính. Điều này cho phép truy cập DB chỉ đọc, nhưng theo mặc định chỉ hoạt động cho EM chính.

Bạn có 3 lựa chọn:

1) Bạn có thể thêm tìm nạp tham gia, ví dụ: FetchMode hoạt động như thế nào trong Spring Data JPA

2) Bạn có thể thêm OpenEntityManagerInViewFilter cho trình quản lý thực thể không phải chính và thêm nó vào ngữ cảnh của bạn.

Xin lưu ý rằng điều này ngụ ý một thách thức, đối với mỗi phiên bản Bar và Foo, ứng dụng của bạn sẽ quay trở lại cơ sở dữ liệu để truy xuất OneToMany. Đây là phần không hoạt động cho Bar, nhưng dành cho Foo. Điều này ngụ ý một vấn đề về khả năng mở rộng (được một số người gọi là vấn đề N + 1) vì đối với mỗi foo và thanh, bạn chạy một truy vấn bổ sung, điều này sẽ làm chậm đối với số lượng Foos và Bars không nhỏ.

3) Một giải pháp thay thế là làm cho bộ sưu tập của bạn trên Bar và Foo háo hức (xem điều này https://docs.oracle.com/javaee/7/api/javax/persistence/OneToMany.html#fetch-- ) nhưng điều này cần được phân tích cẩn thận nếu khả năng mở rộng là mối quan tâm của bạn.

Tôi khuyên bạn nên chọn tùy chọn số 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. MySql chênh lệch giữa hai dấu thời gian trong ngày?

  2. PHP - Bộ kết quả tìm nạp PDO với cột là chỉ mục và cột là giá trị

  3. Trong MySQL, với FK CONSTRAINT làm gì?

  4. Gridview không tồn tại trong bối cảnh hiện tại

  5. Việc đặt giá trị của một cột trong tất cả các hàng rất chậm