sql >> Database teknologi >  >> RDS >> Mysql

Hvordan konfigureres Spring boot til arbejde med to databaser?

*ToMany Collections er som standard dovne i Hibernate &JPA. Fejlen skyldes, at Jackson forsøger at serialisere OneToMany, når entity manager (også kaldet session i dvale-speak) er lukket. Derfor kan dovne samlinger ikke hentes.

Spring Boot med JPA giver som standard et OpenEntityManagerInViewFilter for den primære EM. Dette giver mulighed for skrivebeskyttet DB-adgang, men fungerer som standard kun for den primære EM.

Du har 3 muligheder:

1) Du kan tilføje en join-hentning, f.eks. Hvordan fungerer FetchMode i Spring Data JPA

2) Du kan tilføje et OpenEntityManagerInViewFilter til den ikke-primære enhedsadministrator og tilføje det til din kontekst.

Bemærk venligst, at dette indebærer en udfordring, for hver Bar og Foo-forekomst vil din app gå tilbage til databasen for at hente OneToMany. Dette er den del, der ikke fungerer for Bar, men er for Foo. Dette indebærer et skalerbarhedsproblem (kaldet N + 1-problemet af nogle), da du for hver foo og bar kører en ekstra forespørgsel, som bliver langsom for ikke-trivielle mængder af Foos og Bars.

3) Et alternativ er at gøre din samling på Bar and Foo ivrig (se denne https://docs.oracle.com/javaee/7/api/javax/persistence/OneToMany.html#fetch-- ), men dette skal analyseres omhyggeligt, hvis skalerbarhed overhovedet er et problem for dig.

Jeg vil anbefale mulighed #1.



  1. CSV i SQL-udvikler...

  2. Hvordan kan jeg kopiere en enkelt række/post fra en MySQL-instans til en anden?

  3. gemme en adgangskode sikkert til api uden at kryptere den

  4. Hvad er formatet for PostgreSQL-forbindelsesstrengen / URL'en?