Istnieją dwa podstawowe zastosowania dla @Embedded
/@Embeddable
miarę znam:
pierwsze i najważniejsze: Dzielenie dużych klas podmiotu. W świecie bazy danych duża tabela (jedna z wieloma kolumnami) jest w porządku. Rozbicie takiej tabeli może nawet pogorszyć sytuację i być w konflikcie z zasadami projektowania baz danych. Z drugiej strony w języku Java (lub ogólnie w językach zorientowanych obiektowo) duża klasa to code smell
. Tutaj chcielibyśmy podzielić klasy, w tym klasy jednostek, na mniejsze jednostki. @Embedded
/@Embeddable
pozwala nam to łatwo zrobić bez konieczności dzielenia tabeli bazy danych.
Po drugie, pozwala na ponowne wykorzystanie typowych mapowań między jednostkami. Powiedzmy, że każda tabela ma proste śledzenie wersji, z dwiema kolumnami zawierającymi nazwę użytkownika osoby, która zmieniła wiersz i czas, w którym to się stało. Następnie można utworzyć encję @Embeddable
pokrywającą te wiersze, a następnie ponownie wykorzystać ją dla wszystkich encji, osadzając ją (zamiast powtarzać zmienne odpowiadające tym kolumnom w każdej jednostce).
Czy konsultowałeś Javadoc z tymi adnotacjami? – wero