Obiekty wbudowane w JPA

Obiekty wbudowane w JPA

Obiekty wbudowane stosuje się w przypadku rozbieżności modelu obiektowego i fizycznego modelu bazodanowego. Przykładowo z encją User jest związana encja Address. W modelu obiektowym byty te będą implementowane przez odrębne obiekty, jednak w relacyjnej bazie danych w celu osiągnięcia lepszej wydajności mogą być zaimplementowane przy użyciu jednej tabeli, zawierającej dane zarówno Użytkownika jak i jego Adres:

@Embeddable
public class Address {
    private String city;
    private String postcode;
}
 
@Entity
@Table (name = "person")
public class Person {
 
    @Embedded
    @AttributeOverrides ({ 
    @AttributeOverride (name = "city", column = @Column (name ="ma_city")),
    })
    public Address getAddress () {
        return address ;
    }
}
  • Klasa obiektu wbudowanego musi być oznaczona adnotacją Embeddable. Nie oznacza sie jej jako encji, tym bardziej nie określa się dla niej tabeli w bazie danych ani identyfikatora.
  • Pola klasy o typie oznaczonym jako wbudowywany opatruje się adnotacją Embedded. Nie jest to jednak niezbędne, gdyż specyfikacja JPA nakłada obowiązek na EntityManagera aby sam wybadał sprawę na podstawie adnotacji Embeddable.
  • JPA umożliwia nadpisywanie atrybutów mapowania zdefniowanych w klasie wbudowywanej. W tym celu używa się adnotacji AttributeOverrides, która zawiera listę adnotacji AttributeOverride. I te dopiero służą do nadpisywania mapowania poszczególnych pól klasy.

Leave a comment

Your email address will not be published.


*


Ta strona wykorzystuje pliki cookie. Używamy informacji zapisanych za pomocą plików cookies w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Mogą też korzystać z nich współpracujące z nami firmy badawcze oraz reklamowe. Jeżeli wyrażasz zgodę na zapisywanie informacji zawartej w cookies kliknij na „akceptuję". Jeśli nie wyrażasz zgody, ustawienia dotyczące plików cookies możesz zmienić w swojej przeglądarce. kliknij po więcej informacji

Ta strona wykorzystuje pliki cookie. Używamy informacji zapisanych za pomocą plików cookies w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu. Mogą też korzystać z nich współpracujące z nami firmy badawcze oraz reklamowe. Jeżeli wyrażasz zgodę na zapisywanie informacji zawartej w cookies kliknij na „akceptuję". Jeśli nie wyrażasz zgody, ustawienia dotyczące plików cookies możesz zmienić w swojej przeglądarce.

zamknij