Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.

Ähnliche Präsentationen


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

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


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

Ähnliche Präsentationen


Google-Anzeigen