Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.

Ähnliche Präsentationen


Präsentation zum Thema: "Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation."—  Präsentation transkript:

1 Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation

2 Access Typ Für das Persistenz-Framework existieren zwei Zugriffspunkte auf die Daten einer Klasse 2 // 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 Access Typ Options (JPA 2.0) Verschiedene Access Types pro Klasse möglich Mischen von Acces Types in einer Vererbungshierarchie 3 @Entity @Access(FIELD) public class Vehicle {... @Transient double fuelEfficiency; @Access(PROPERTY) protected double getDbFuelEfficiency() { return convertToImperial(fuelEfficiency); }... }

4 Mapping Es wird immer vom Defaultverhalten ausgegangen Das Defaultverhalten kann übersteuert werden 4 @Entity @Table(name = "EMP") public class Employee { @Id @Column(name = "EMP_ID")... }

5 Persistente Datentypen Erlaubt: Alle primitiven Typen, 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: Alle Arten von Arrays ausser die obgenannten Collections von etwas anderem als Entities, also z.B. Wrapperklassen und andere serialiserbare Typen. 5

6 Java / SQL Type Mapping Implizit durch JDBC Data Type Conversion Table definiert Explizit durch die @Column Annotation, z.B. Produktspezifisch durch JPA-Implementation oder im JDBC-Driver für die jeweilige Datenbank 6 @Column(name = "sender") protected String sender;

7 Lazy Fetching und Large Objects Lazy Field Loading Large Objects 7 @Basic(fetch = FetchType.LAZY) private String comments; @Basic(fetch = FetchType.LAZY) @Lob private byte[] picture;

8 Enumerations Enumerations können persistent sein. In der Datenbank wird entweder der Ordinalwert (Position) oder der Stringwert (Name der Konstante) abgelegt. Vorsicht bei Änderungen an der Enumeration 8 // Variante Ordinal @Enumerated(EnumType.ORDINAL) protected MessageStatus status; // Variante String @Enumerated(EnumType.STRING) protected MessageStatus status;

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: Mögliche Typen: TemporalType.DATE, TemporalType.TIME, TemporalType.TIMESTAMP 9 @Temporal(TemporalType.DATE) private Calendar dob;

10 Transiente Attribute Attribute können von der Persistierung ausgeschlossen werden Entweder mittels transient: oder wenn das Attribut serialisiert werden soll mittels Annotation: 10 transient private String translatedName; @Transient private String translatedName;

11 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 11

12 Primärschlüssel Generierung Primärschlüssel können in Zusammenarbeit mit der Datenbank generiert werden. Beispiel: Stragegien sind Identity, Table, Sequence und Auto 12 @Entity public class Employee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Integer id; }

13 GenerationType.TABLE 13 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;... }


Herunterladen ppt "Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation."

Ähnliche Präsentationen


Google-Anzeigen