Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да конфигурирам Spring boot за работа с две бази данни?

*ToMany колекциите са мързеливи по подразбиране в Hibernate &JPA. Грешката е, защото Джаксън се опитва да сериализира OneToMany, когато мениджърът на обект (известен още като сесия в режим на хибернация) е затворен. Следователно мързеливите колекции не могат да бъдат извлечени.

Spring Boot с JPA по подразбиране предоставя OpenEntityManagerInViewFilter за първичния ЕМ. Това позволява достъп до DB само за четене, но по подразбиране работи само за основния EM.

Имате 3 опции:

1) Можете да добавите извличане на присъединяване, напр. Как работи FetchMode в Spring Data JPA

2) Можете да добавите OpenEntityManagerInViewFilter за неосновния мениджър на обекти и да го добавите към вашия контекст.

Моля, имайте предвид, че това предполага предизвикателство, за всеки екземпляр на Bar и Foo вашето приложение ще се върне в базата данни, за да извлече OneToMany. Това е частта, която не работи за Bar, но е за Foo. Това предполага проблем с мащабируемостта (наричан от някои проблем N + 1), тъй като за всеки foo и бар изпълнявате допълнителна заявка, която ще се забави за нетривиални количества Foos и Bars.

3) Алтернатива е да направите колекцията си в Bar and Foo нетърпелива (вижте този https://docs.oracle.com/javaee/7/api/javax/persistence/OneToMany.html#fetch-- ), но това трябва да бъде анализирано внимателно, ако мащабируемостта е проблем за вас.

Бих препоръчал вариант №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. Добавете външен ключ към съществуваща таблица

  2. mysql_exceptions.OperationalError:(1045, Достъпът е отказан за потребител 'root'@'localhost' (използвайки парола:ДА))

  3. JOIN заявки срещу множество заявки

  4. Как отстранявате грешки в MySQL съхранените процедури?

  5. Преминаване през входни масиви на формуляри в php