Pytanie. 1. Dlaczego koniecznie jedna baza?
Pytanie. 2. Powiedz mi, bo się nie znam, czy JPA umożliwia te warstwy pośrednie implementacji persystencji czy wysyła nas od razu do pełnowymiarowej bazy danych SQL?
1 Choćby przez reguły integralności. Pocięcie bazy (w duchu mikroseriwsów - bo tak odczytuję Twoją wrzutkę) wymaga wiele wysiłku, aby na tym odbudować namiastkę tego, co mieliśmy za darmo: eventual integrity, synchronizacja. Złozonośc pieknie jedzie w górę. Brrrrr.
Samochód można przypisać tylko aktywnemu Pracownikowi, i nie można gdy utracił aktywności itd... dokument może sporządzić aktywny Operator itd
Filozofia mikroseriwsowa to overkill
- JPA to standard, jego wiodące implementacje to Hibernate, Eclipselink, OpenJPA i jeszce jakieś. Generalnie rzecz jest mocno skomplikowana, stany w jakich może być encja są skomplikowane. Zwykle w 99.9% trafia do bazy danych SQL (chyba są dialecty SQLLite, ale nie będe przysięgał), ale np zwłaszcza Eclipselink zabawia się innymi backendami niż bazy SQL, jak webserwisy
Niektóre implementacje JPA sa czapką nad bazami obiektowymi (implementacje chyba nie mają 100% zgodności, bo paradygmat bazy jest radykalnie inny)
w pamięci operacyjnej. Jeżeli to nie spełnia wymagań zmieniam implementację na serializację na dysku twardym. Jeżeli to nie spełnia wymagań zmieniam implementację na sqlite. I dopiero na końcu, jak wymaga tego sytuacja rozważam zastosowanie zaawansowanej bazy danych SQL.
Pewne dane: wieloletnie, o silnych w naturze relacjach (Operator, Pracownik, Dział , Wydział), wieloletnie o skomplikowanej zależności czasowej (trzymamy dane "od stworzenia świata", choć zwykle kontakt mamy z bieżącym rokiem) z natury wskazują wprost, bez etapów prób serializacji, na bazę relayjną Samochód eksploatowany w 2022 został przyjęty w 2014, i tam mają źródła jego "kwity", obecnie jest w rękach Pracownika z 1998 roku (poprzednio tzrech innych), obecnie jest w Wydziale A, choć dawniej był w Wydziale B.
Są sytuacje, ze szkoda energii na serializację, profesjonalista z góry wie, że niecelowe (podobnie na SQLite - choć mając warstwowy system można to mieć bez rewolucji, ale po co)