69
Advanced JPA Topics Miroslav Blaˇ sko [email protected] November 30, 2016 Miroslav Blaˇ sko ([email protected]) Advanced JPA Topics November 30, 2016 1 / 69

Advanced JPA Topics - cvut.cz · 30/11/2016 · Advanced JPA Topics Miroslav Bla sko [email protected] November 30, 2016 Miroslav Bla sko ([email protected]) Advanced

Embed Size (px)

Citation preview

Advanced JPA Topics

Miroslav Blasko

[email protected]

November 30, 2016

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 1 / 69

Contents

1 Embedded Objects

2 Mapping to legacy databases

3 Cascades

4 Collection Mapping

5 Compound and Shared Keys

6 Compound Join Columns

7 Various Attributes and Access Types

8 Queries

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 2 / 69

Embedded Objects

Embedded Objects

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 3 / 69

Embedded Objects

Embedded Objects

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 4 / 69

Embedded Objects

Embedded Objects

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 5 / 69

Embedded Objects

Embedded Objects

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 6 / 69

Embedded Objects

Embedded Objects

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 7 / 69

Mapping to legacy databases

Mapping to legacy databases

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 8 / 69

Mapping to legacy databases

How to map legacy databases

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 9 / 69

Mapping to legacy databases

How to map legacy databases

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 10 / 69

Cascades

Cascades

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 11 / 69

Cascades

Cascade-persist

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 12 / 69

Cascades

Persisting bidirectional relationship

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 13 / 69

Cascades

Cascade

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 14 / 69

Collection Mapping

Collection Mapping

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 15 / 69

Collection Mapping

Collection Mapping

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 16 / 69

Collection Mapping

Collection Mapping

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 17 / 69

Collection Mapping

Collection Mapping

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 18 / 69

Collection Mapping

Collection Mapping

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 19 / 69

Collection Mapping

Collection Mapping

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 20 / 69

Collection Mapping

Collection Mapping

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 21 / 69

Collection Mapping

Collection Mapping - Ordered List

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 22 / 69

Collection Mapping

Collection Mapping - Ordered List

Figure: Ordering by Entity or Element Attribute

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 23 / 69

Collection Mapping

Collection Mapping - Ordered List

Figure: Ordering by Entity or Element Attribute

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 24 / 69

Collection Mapping

Collection Mapping - Ordered List

Figure: Persistently ordered lists

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 25 / 69

Collection Mapping

Collection Mapping - Ordered List

Figure: Persistently ordered lists

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 26 / 69

Collection Mapping

Collection Mapping - Maps

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 27 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by basic type - key is String

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 28 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by basic type - key is an enumeration

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 29 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by basic type - 1:N relationship using a Map with String key

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 30 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by basic type - N:M relationship using a Map with String key

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 31 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by entity attribute

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 32 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by embeddable type

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 33 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by embeddable type

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 34 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by embeddable type

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 35 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by embeddable type

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 36 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by embeddable type

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 37 / 69

Collection Mapping

Collection Mapping - Maps

Figure: Keying by entity

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 38 / 69

Compound and Shared Keys

Compound and Shared Keys

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 39 / 69

Compound and Shared Keys

Compound primary keys

Figure: Id Class

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 40 / 69

Compound and Shared Keys

Compound primary keys

Figure: Embedded Id Class

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 41 / 69

Compound and Shared Keys

Compound primary keys

Figure: Embedded Id Class

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 42 / 69

Compound and Shared Keys

Shared Primary Key

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 43 / 69

Compound and Shared Keys

Shared Primary Key

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 44 / 69

Compound Join Columns

Compound Join Columns

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 45 / 69

Compound Join Columns

Compound Join Columns

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 46 / 69

Compound Join Columns

Compound Join Columns

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 47 / 69

Various Attributes and Access Types

Various Attributes and AccessTypes

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 48 / 69

Various Attributes and Access Types

Read-only mappings

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 49 / 69

Various Attributes and Access Types

Optionality

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 50 / 69

Various Attributes and Access Types

Access types - Field access

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 51 / 69

Various Attributes and Access Types

Access types - Property access

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 52 / 69

Various Attributes and Access Types

Access types - Mixed access

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 53 / 69

Various Attributes and Access Types

Access types - Mixed access

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 54 / 69

Queries

Queries

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 55 / 69

Queries

Queries

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 56 / 69

Queries

JPQL

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 57 / 69

Queries

JPQL - query parameters

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 58 / 69

Queries

JPQL - defining a query dynamically

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 59 / 69

Queries

JPQL - using parameters

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 60 / 69

Queries

JPQL - named queries

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 61 / 69

Queries

JPQL - named queries

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 62 / 69

Queries

JPQL - pagination

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 63 / 69

Queries

JPQL - bulk updates

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 64 / 69

Queries

Native (SQL) queries

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 65 / 69

Queries

Native (SQL) queries

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 66 / 69

Queries

Native (SQL) queries

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 67 / 69

Queries

The End

Thank You

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 68 / 69

Queries

Resources

JSR 338 Java Persistence 2.1 Final Releasehttp://jcp.org/aboutJava/communityprocess/final/jsr338/index.html

Miroslav Blasko ([email protected]) Advanced JPA Topics November 30, 2016 69 / 69