Post on 14-Dec-2014
description
Java Persistence API (JPA)
A Brief Overview
By Scott Rabon
We have come a long way
• Java application persistence history
– JDBC
– EJB Entity Beans
1
Industry answered the call
• Proprietary persistence products were introduced
– JBoss Hibernate
– Oracle Top Link
2
Why Another Standard
• Standard goes deeper than a product
• Can be implemented by different vendors
• Developers code to interface, not implementation
3
A Standard Is Born
JSR 220 – EJB 3.0 Specification
Java Persistence API part of EJB 3.0 Specification
4
JPA Fun Facts
• JSR 220 formed May 2003
• Released May 2006
• Expert group consisted of industry ORM developers
5
JPA – Designed for Ease of Use
• Main goal of design team
• Elegant, powerful and flexible
• Easy to learn
6
Aspects: POJO Persistence
• Objects are POJO’s
• Mapping is metadata driven
• External XML or annotation based
7
Aspects: Non Intrusiveness
• API does not intrude on objects
• API exists as a separate layer from persistent objects
• Objects are “unaware” of the API
8
Aspects: Object Queries
• Query across entities and relationships
• Expressed in Java Persistence Query Language (JPQL)
• Uses a schema abstraction
9
Aspects: Mobile Entities
• Detachment Model• Move entities
between JVM’s• Can change state
anywhere along the way
• Reattach upon return
10
Aspects: Simple Configuration
• Java SE 5 Annotations
• XML
• Heavy use of defaults
11
Aspects: Integration and Testability
• Challenge: Testing on an app server
• API works outside application server– Two tier apps– Unit tests and
automated testing frameworks
12
Entities
Not same as entity beans
13
Entity Characteristics - Persistability
• Entities must be persistable
• State can be represented in a data store
• Entities can be manipulated without having persistent repercussions – app must use API
14
Entity Characteristics - Identity
• Key that uniquely identifies an instance
• Persistent identity
• Equivalent to primary key
15
Entity Characteristics - Transactionality
• Adds, updates and deletes normally occur in a transaction
• Changes succeed or fail atomically
• In memory entities
16
Entity Characteristics - Granularity
• Not primitives, wrappers, built-in objects
• Are business domain objects that mean something
• Should be fairly lightweight objects
17
Entity Manager
• Interface encapsulating most persistence functionality
• Set of managed instances is named persistence context
18
Queries
• Use JPQL syntax
• Can be defined statically (named) or dynamically
• Dynamic queries supply query criteria
19
JPA’s future - Independence
• Break free from the EJB specification
• Will get it’s own JSR for future evolution
20
The End
5 minutes of question time
starts now!
Questions
4 minutes left!
Questions
3 minutes left!
Questions
2 minutes left!
Questions
1 minute left!
Questions
30 seconds left!
Questions
TIME IS UP!