Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Siegfried Ragatz Geändert vor über 11 Jahren
1
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli
2
Access Typ Für das Persistenz-Framework existieren zwei Zugriffspunkte auf die Daten einer Klasse Field Access @Entity public class Employee { @Id private int id; } Property Access @Entity public class Employee { protected int id; @Id public int getId() { return id; } }
3
Mapping Es wird immer vom Defaultverhalten ausgegangen Das Defaultverhalten kann übersteuert werden @Entity @Table(name = "EMP") public class Employee { @Id @Column(name = "EMP_ID")... }
4
Persistente Datentypen Erlaubt sind Alle primitiven Typen, java.lang.String Alle Wrapperklassen und serialisierbaren Typen (z.B. Integer, BigDecimal, Date, Calendar ) byte[], Byte[], char[], Character[] Enumerations Beliebige weitere Entity-Klassen Collections von Entities, welche als Collection<>, List<>, Set<> oder Map<> deklariert sind. Nicht erlaubt sind Alle Arten von Arrays ausser die obgenannten Collections von etwas anderem als Entities, also z.B. Wrapperklassen und andere serialiserbare Typen.
5
Entity Identity - Primärschlüssel Jede Entity-Klasse muss einen mit @Id bezeichneten Primärschlüssel besitzen. Eine Id kann von folgenden Typen sein: Primitive Java Typen: byte, int, short, long, char Wrapper Klassen: Byte, Integer, Short, Long, Character Array von primitiven Typen oder Wrapper Klassen java.lang.String java.math.BigInteger Zeittypen: java.util.Date, java.sql.Date Floating Point Typen sind ebenfalls erlaubt, aber sind aufgrund der möglichen Rundungsfehler nicht zu empfehlen
6
Primärschlüssel Generierung Primärschlüssel können in Zusammenarbeit mit der Datenbank generiert werden. @Entity public class Employee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public int id; } Stragegien sind Identity, Table, Sequence und Auto (Default)
7
public class Employee { @TableGenerator(name = "Emp_Gen", table = "ID_GEN", pkColumnName = "GEN_NAME", valueColumnName = "GEN_VAL") @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "Emp_Gen") private int id;... } GenerationType.TABLE
8
Transiente Attribute Attribute können von der Persistierung ausgeschlossen werden Entweder mittels transient : transient String translatedName; oder wenn das Attribut serialisiert werden soll mittels Annotation: @Transient String translatedName;
9
Temporale Typen Erlaubte Zeittypen: java.sql.Date, java.sql.Time, java.sql.Timestamp java.util.Date, java.util.Calendar java.sql Typen brauchen keine weitere Definition Bei java.util Typen muss der JDBC Typ angegeben werden: @Temporal(TemporalType.DATE) private Calendar dob; Mögliche Typen: TemporalType.DATE, TemporalType.TIME, TemporalType.TIMESTAMP
10
Enumerations Enumerations können persistent sein. In der Datenbank wird entweder der Ordinalwert (Position) oder der Stringwert (Name der Konstante) abgelegt. Variante Ordinal @Enumerated(EnumType.ORDINAL) protected MessageStatus status; Variante String @Enumerated(EnumType.STRING) protected MessageStatus status; Vorsicht bei Änderungen an der Enumeration!
11
Large Objects Large Objects @Lob private byte[] picture;
12
Java / SQL Type Mapping Implizit durch JDBC Data Type Conversion Table definiert Explizit durch die @Column Annotation, z.B. @Column(name = "sender") protected String sender; Produktspezifisch durch JPA-Implementation oder im JDBC-Driver für die jeweilige Datenbank
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.