Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli.

Ähnliche Präsentationen


Präsentation zum Thema: "Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli."—  Präsentation transkript:

1 Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli

2 Komposition: Mutterobjekt mit eingebetteten Objekten Eingebettete Objekte haben keine eigene Identität Mutterobjekt und eingebettete sind in derselben Tabelle abgelegt Embedded Objects

3 Embedded Objects, Beispiel @Embeddable public class Address { private String street; private String city; private String state; private String zip; //... } @Entity public class Employee { @Id private int id; private String name; private long salary; @Embedded private Address address; //.... }

4 Zusammengesetzte Primärschlüssel Es wird eine spezielle ID-Klasse benötigt. Beispiel: public class EmployeeId implements Serializable { protected String country; protected int id; @IdClass( EmployeeId.class ) // Variante 1 @Entity public class Employee { @Id protected String country; @Id protected int id; @Entity public class Document { // Variante 2 @EmbeddedId public EmployeeId id;

5 Mehrere Tabellen pro Entity Gelegentlich wird eine Entity in der Datenbank in mehrere Tabellen modelliert oder muss umgekehrt aus mehreren Tabellen zusammengesetzt werden. Eine Entity kann beliebig viele Sekundärtabellen haben: @Entity @Table( name = "Employee" ) @SecondaryTable( name = "EmployeeExt", pkJoinColumns = { @PrimaryKeyJoinColumn(name="idRef", referencedColumnName = "id") } ) public class Employee {... }

6 Vererbung Vererbungshierarchien können problemlos verwendet und abgebildet werden. Klassen können abstrakt oder konkret sein. Alle Klassen in der Vererbungshierarchie müssen den Primärschlüssel der Basisklasse verwenden (erben). Es gibt vier Mappingstrategien auf die Datenbank: Eine einzige Tabelle für die gesamte Verbungshierarchie Eine Tabelle für jede konkrete Klasse Eine Tabelle für jede Klasse Mapped Superclass

7 SINGLE_TABLE @Entity @Inheritance public class Project @Entity public class DesignProject extends Project @Entity public class QualityProject extends Project

8 JOINED @Entity @Inheritance(strategy=InheritanceType.JOINED) public class Project @Entity public class DesignProject extends Project @Entity public class QualityProject extends Project

9 TABLE_PER_CLASS @Entity @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) public class Project @Entity public class DesignProject extends Project @Entity public class QualityProject extends Project

10 MAPPED_SUPERCLASS BaseEntity @MappedSuperclass public abstract class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) protected Integer id; protected Integer version; protected Timestamp createdAt; protected String createdFrom; protected Timestamp updatedAt; protected String updatedFrom; Phone @Entity public class Phone extends BaseEntity


Herunterladen ppt "Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli."

Ähnliche Präsentationen


Google-Anzeigen