jpa 2.0 in java ee 6 part ii

49
JPA 2.0 in JAVA EE 6 Basics Mapping Query Transaction and Concurrency

Upload: lars-lemos

Post on 14-Aug-2015

74 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA

EE 6

Basics

Mapping

Query

Transaction and Concurrency

Page 2: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

What is JPA? Java EE Standard ORM Framework JPA 2.0 (JSR 317)

JPA 1.0 part of EJB 3.0 JSR 220

JPA 2.0 standalone JSR 317

JPA 2.1 (JSR 338) included in Java EE 7

Enables transparent POJO Persistence

Handles Object Relational impedance mismatch

Enables building persistent objects following common

OOP concepts

Page 3: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Why JPA?

Page 4: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Why JPA?

Page 5: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Java Persistence Features

Simplify the persistence programming Default over configuration (Convention over configuration )

Elimination of deployment descriptor

Provide light-weight persistence modelIn both programming model and deployment

Runtime performance

Enable testability outside of the containers Enables test-driven development

Test entities as part of nightly-buid process

Page 6: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Java Persistence Features

Support rich domain modelling Support inheritance and polymorphism among entities

Provide standardized and efficient ORMOptimized for relational databaseStandardize annotations and XML configuration files

Provide extensive querying capabiliies Support for pluggable, third-party persistence providers.

Through persistence unit – represented by persistence.xml Persistence API expanded to include use outside EJB

container Evolved into “common” Java persistence API between Java

SE and Java EE apps

Page 7: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

JPA Architecture

Java Application Java Persistence API

Hibernate EclipseLink Kodo (OpenJPA)

Everyone can use their own favorite persistence technology

Page 8: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Entity

Plain Old Java Object (POJO) Supports OO programming model, (PIE)

Can be in either persistent(manage) or non-

persistent state (detached)Example of non-persistent state is “transient” state

Have persistent identity When it is in managed state

Can extend other entity and non-entity classes

(Inheritance)

Serializable; usable as detached objecs in other tiers

Page 9: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Simple MappingMapping defaults to matching column name.

Default Mapping Entity name -> table name

(customizable via @Table) Attribute name -> column

name(customizable via @Column)

Data type mapping (some differences among databases) String -> VARCHAR(255) Long, long -> BIGINT Double, double -> DOUBLE Boolean -> SMALLINT

Page 10: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Entity Class (@Entity)

Annotated with @Entity

Can extend another entity

Can be a concrete or abstract class

Programming requirement Must have a primary key field

Must have a public no-arg constructor

Instance variables must not be public

Must not be final or have final methods

Page 11: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Entity Identity (@Id, @GeneratedValue ) Every entity has a persistence identity

Maps to primary key in database

Cancorrespond to simple type @Id – single field/property in entity class

@GeneratedValue – value can be generated automatically using

various strategies

AUTO – Choose type depending on database, e.g: IDENTITY for

MySQL

IDENTITY – using a database identity column

SEQUENCE – using a database sequence

TABLE – Use a sequence table for key generation (most portable)

Page 12: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

O/R Mapping Annotations

Set of annotations defined for mapping

(Relationships, Joins, Database tables and

columns)

An Example Data Model Maps entity state to data store

Maps relationships to other entities

Page 13: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

@Table – change the default

name of the table

Page 14: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6 Basics

@SecondaryTables –

associates a secondary table

Page 15: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

O/R Mapping Annotations

Page 16: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

@Column – changes

attibutes of the column such

as the name, length and

whether allows NULL or

NOT.

Page 17: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Page 18: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

@Basic – overrides basic

persistence

fetch.LAZY

fetch.EAGER

Page 19: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

@Temporal – provides representation of

date, hour or milliseconds

Page 20: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Page 21: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

@Enumerated – maps the enum values as Text( ORDINAL

default)

Page 22: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

@Transient – disables the mapping of a given attribute

Page 23: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

@CollectionTable – specifies the table

that is used for the mapping of

collection of basic or embeddable types.

@ElementCollection – inform the

persistence provider rerence is a set of

collection and defines the “fetch”

mode.

Page 24: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Page 25: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6 Basics DEMO

Page 26: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Concepts of JPA Operations Entity Manger

Persistent context

Persistent unit

Page 27: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6Basics

Life Cycle of an Entity

Page 28: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6

Basics

DEMO

Page 29: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6

End of

Part I

Basics

Part II – Mapping

Thank you for your patience….

[email protected] Lars Lemos

toplars

Page 30: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA

EE 6Mapping

Page 31: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Types of Entity Relationship

Directionality Uni-directional

Bi-directional

Cardinality relationships One to one

One to many

Many to many

Inheritance relationship Single table

Joined Table

Page 32: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Directionality & Ownership

Relationship has an ownership Who owns the relationship affects how tables are created.

Uni-directional Ownership is implied

Bi-directional Ownership needs to be explicitly specified.

Owner of the relationship, inverse-owner of the relationship.

Page 33: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Directionality & Navigation

Directionality affects the navigation

Uni-directional customer.getAddress() is allowed but address.getCustomer() is not

supported for 1-1 relationship

customer.getOrders() is allowed but order.getCustomers() is not supported

for 1-m relationship.

speaker.getEvents() is allowed but event.getSpeakers() is not supported for

n-m relationship.

Bi-directional Navigation on both direction

Page 34: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Cardinality Relationship Cardinality relationships

@OneToOne : Customer – Address

@OneToMany: Customer – Orders

@ManyToMany : Speakers – Events

@ManyToOne: Employee - Project

One-to-Many and Many-to-Many relationships are

represented in Java code through

Collection, Set, List and Map

Page 35: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Uni-directional Mappings @OneToOne : Employee – ParkingSpace

Page 36: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Uni-directional Mappings @ManyToOne : Employee – Department

Page 37: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Bi-directional Mappings @OneToOne : Employee – ParkingSpace

The owner is the side with he foreign key

Page 38: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Bi-directional Mappings @OneToMany: Employee – Department

The owner is always the “Many” side

Page 39: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Bi-directional Mappings @ManyToMany: Employee – Project

Page 40: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Mapping

Embedded Objects @ManyToMany: Employee – Project

Page 41: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA

EE 6Query

Page 42: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Query

JPA Query Features Static queries

Defined with Java language metadata or XML

Anonotations: @NamedQuery, @NamedNativeQuery

Dynamic queries

Query string can be created at runtime.

Use Java Persistence Query Language (JPQL) or SQL

Named or positional parameters

EntityManager is factory for Query objects createNamedQuery, createQuery, createNativeQuery

Query methods for controlling max results, pagination,

flush mode

Page 43: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Query

JPQL

Page 44: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Query

Named query Queries tha can be reusable.

Page 45: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Query

Named query

Page 46: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Query

Dynamic Query Build and execute queries dynamically at runtime.

Page 47: Jpa 2.0 in java ee 6  part ii

Mapping in JPA 2.0 in JAVA EE 6Query

Native Query Build and execute queries based on native SQL.

Page 48: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6

Mapping & Querying

DEMO

Page 49: Jpa 2.0 in java ee 6  part ii

JPA 2.0 in JAVA EE 6

End of

Part III

Basics

Part IV – Advanced JPA & Transactions

Thank you for your patience….

[email protected] Lars Lemos

toplars