To jest dobre pytanie.
Ujawniając klasy jednostek JPA do reszty systemu, ujawniasz mechanizm utrwalania i obiekt do mapowania db. Stracisz kontrolę nad tym, jak te obiekty są CRUDded i zarządzane. Poprzez przerwanie enkapsulacji trwałości zmiana może mieć wpływ na pozostałą część systemu.
Przyszłe zmiany w trwałości systemu mogą być niemożliwe, niewygodne, ograniczone i/lub ryzykowne. Przykład: być może trzeba będzie zoptymalizować pod kątem wydajności i/lub skalowalności. Może to wymagać buforowania, zmian schematu bazy danych, braku użycia RDBMS, wielu baz danych. Enkapsulacja pomaga również w ograniczeniu migracji do przyszłych schematów db.
więc kompromis jest:
- zarządzanie i utrzymanie aplikacji warstwy trwałości na górze WZP który hermetyzuje wytrwałości. tj. interfejs.LUB
- zdecydować się na wykorzystanie JPA we wszystkich strukturach architektury. Zaakceptuj fakt, że przyszłe zmiany mogą mieć efekty ogólnosystemowe.
Pierwsza opcja może być konieczna, jeśli częste zmiany w całym systemie są niedopuszczalne - np. Firmy zewnętrzne uzyskują dostęp do twoich danych. A może zdecydowałeś się na architekturę trójwarstwową: GUI, logikę biznesową, trwałość.
Druga opcja jest OK, jeśli masz sprawny proces rozwoju i masz kontrolę nad całym systemem i akceptujesz fakt, że zmiana całego systemu może być konieczna w linii.
Udzielając odpowiedzi, ponieważ łączyłeś się z interesującą dokumentacją antypaterynkową. – Tazzy531