Вы находитесь на странице: 1из 24

Crer la couche de persistance

Copyright 2007, Oracle. Tous droits rservs.

Objectifs
Ce chapitre traite des sujets suivants : expliquer le concept de persistance crer un mapping relationnel objet utiliser des annotations pour amliorer les entits JPA (Java Persistence API API de persistance Java) utiliser des entits JPA pour mettre en correspondance des donnes d'application avec la base de donnes identifier une interrogation JPA et l'utiliser efficacement dans une application

3-2

Copyright 2007, Oracle. Tous droits rservs.

Qu'est-ce que la persistance ?


La couche de persistance permet de mettre en correspondance les objets et les tables de base de donnes. Cette couche est associe aux caractristiques suivantes : Elle permet la portabilit entre les bases de donnes et les schmas. Elle prend en charge les fonctionnalits de lecture, d'criture et de mise en mmoire cache. Elle vite aux dveloppeurs d'avoir grer les problmes lis la base de donnes. Elle facilite les modifications et la gestion des donnes. Il est recommand de l'utiliser dans toutes les applications disposant d'un modle objet.
3-3 Copyright 2007, Oracle. Tous droits rservs.

Persistance : Prsentation
La mise en correspondance d'objets de base de donnes relationnelle avec des objets Java facilite le dveloppement d'applications Java EE. Ce mapping est fourni par des structures telles que l'API de persistance Java EJB 3.0.

Architecture de persistance entit/JPA

Modle Java

Schma

3-4

Copyright 2007, Oracle. Tous droits rservs.

Couche de persistance
Une couche de persistance isole les informations de persistance de la couche applicative.

Les rsultats de l'interrogation et de la cration au niveau objets sont des objets.

Objets

Objets

Crations et mises jour d'objets via une API de niveau objet. L'API utilise SQL ou des appels de base de donnes spcifiques.

Persistance

Les rsultats sont renvoys en tant que donnes brutes.

Lignes

SQL

3-5

Copyright 2007, Oracle. Tous droits rservs.

Qu'est-ce qu'un objet POJO ?


Un objet POJO : est un objet Plain Old Java Object n'implmente aucune interface spciale est indpendant de l'environnement de dveloppement permet aux dveloppeurs de se concentrer sur la logique mtier contient des dfinitions de champ et des mthodes d'accs (accessors)

3-6

Copyright 2007, Oracle. Tous droits rservs.

API de persistance Java EJB 3.0

Modle d'entit POJO lger


portable simplifi modulaire

Mapping relationnel objet normalis


annot flexible

Interrogations dynamiques EJB QL pleinement fonctionnel

3-7

Copyright 2007, Oracle. Tous droits rservs.

Entits JPA

Mcanisme de persistance cohrent


API de persistance Java (JPA)

Modle de programmation simple


persistance des objets POJO (Plain Old Java Objects) annotations de mapping relationnel objet mthodes get/set possibilit d'inclure une logique (validation, etc.)

L'objet EntityManager
gre les manipulations de donnes permet l'appel des entits hors du conteneur

3-8

Copyright 2007, Oracle. Tous droits rservs.

Annotations d'entit
@Entity
@Id @IdClass @EmbeddedId

@Table, @SecondayTable
@UniqueConstraint @PrimaryKeyJoinColumn(s)

@NamedQuery(s) Squencement
@GeneratedValue @SequenceGenerator @TableGenerator

3-9

Copyright 2007, Oracle. Tous droits rservs.

Comment fonctionnent les entits JPA ?


Une entit JPA : est un objet lger qui gre les donnes de persistance est dfinie sous la forme d'un objet POJO (Plain Old Java Object) avec l'annotation Entity (aucune interface requise) doit implmenter l'interface java.io.Serializable pour tre transmise par valeur vers une application distante est mise en correspondance avec une base de donnes l'aide d'annotations
@Entity @Table(name="PRODUCTS") @Id @Column(name="PRODID")

POJO

ORDERS

Base de donnes
3-10 Copyright 2007, Oracle. Tous droits rservs.

Fonctionnement de l'API de persistance Java


CreateProducts Appel de addProducts ProductsBean Appel de persist Entit Product

Objet Product

EntityManager Insertion d'un enregistrement Table Products

3-11

Copyright 2007, Oracle. Tous droits rservs.

Mapping O/R JPA

Les stratgies de mapping par dfaut pertinentes :


Utilisent des annotations pour remplacer les valeurs par dfaut.

Interfaces de collection utilises pour les relations :


@OneToOne, @OneToMany, @ManyToOne, etc.

Possibilit de mettre en correspondance un ou plusieurs objets persistants avec une table :


Possibilit d'imbrication

Prise en charge des stratgies d'hritage standard :


Une table par hirarchie de classes, par classe, etc.

3-12

Copyright 2007, Oracle. Tous droits rservs.

Types de mapping

Le type de mapping dfinit le mode de stockage des donnes et des relations d'un objet dans la base. Stockage direct dans un champ : Les donnes d'une variable d'instance sont stockes directement dans une colonne d'une table. Conversion de type : Les donnes d'un certain type sont stockes dans une table avec un autre type.
Par exemple, la chane "age" de l'objet est stocke avec le type numrique dans la table.

1 1 : Une relation 1 1 entre deux classes est stocke dans la base de donnes.

3-13

Copyright 2007, Oracle. Tous droits rservs.

Indiquer un mapping relationnel objet

La mise en correspondance d'une entit JPA avec une table de base de donnes est ralise par dfaut, l'aide d'annotations.
@Entity // annotation public class Products implements Serializable { @Column(nullable = false) private String description; private String image; @Column(nullable = false) private String name; @Id @Column(name="PROD_ID", nullable = false) private Long prodId; }

PRODUCTS PRODID (PK) NAME

3-14

Copyright 2007, Oracle. Tous droits rservs.

Mettre en correspondance des relations entre les entits


Annotations pour les relations entre entits : OneToOne
User
Address

OneToMany

ServiceRequest

ServiceHistory

ManyToMany et AssociationTable

Users

Products

3-15

Copyright 2007, Oracle. Tous droits rservs.

Grer la persistance des entits JPA

Le cycle de vie d'une entit est gr l'aide de l'interface EntityManager, qui fait partie de l'API de persistance Java. Une entit peut tre cre l'aide de :
l'oprateur new (cre une instance dtache)

Une entit est insre, mise jour ou supprime partir d'une base de donnes via l'API de persistance Java. persist()
new merge() remove() find() LMD

Interrogation

Entit

API de persistance Java

Entits

Base de donnes

3-16

Copyright 2007, Oracle. Tous droits rservs.

Entity Manager
Interrogation :
Extraction d'entits de la base de donnes

Transactions :
Application de modifications aux entits

Gnral :
isOpen() close() contains(Object entity)

Utilisation :
Gestion par le conteneur (injection) Initialisation (bootstrap) d'application (EntityManagerFactory)

3-17

Copyright 2007, Oracle. Tous droits rservs.

Entity Manager

Validation (commit) des enregistrements

Instruction SQL

Objet

EntityManager

Base de donnes

Extraction des enregistrements

Rsultats de l'interrogation

3-18

Copyright 2007, Oracle. Tous droits rservs.

Interface Entity Manager de l'API de persistance Java


L'API EntityManager sert de point d'accs non typ (indpendant du type de l'objet) :
Accs aux entits et manipulation Injection l'aide de l'annotation @PersistenceContext Cration d'un nouvel objet POJO avec le mot-cl new

Elle fournit des oprations de cycle de vie :


persist() remove() merge()

Il agit comme instanciateur pour les objets interrogation.

3-19

Copyright 2007, Oracle. Tous droits rservs.

Cycle de vie d'une entit


Dont la persistance doit tre assure

new()

find() query() persist() remove()

Nouvelle

Gre

Supprime

Hors de porte

merge() refresh()

Dtache

3-20

Copyright 2007, Oracle. Tous droits rservs.

Contexte et porte de persistance


Le contexte gre l'tat de l'entit pour EntityManager. Une entit est gre pendant la porte de la persistance. Le contexte suit les entits attaches une transaction.

Transaction Contexte de persistance Entit

Entit dtache

3-21

Copyright 2007, Oracle. Tous droits rservs.

Manipuler des enregistrements avec l'API de persistance Java


JPA QL (JPA Query Language) est un langage d'interrogation pour des interrogations dynamiques et statiques exprimes via des mtadonnes.
Mapping de persistance
SELECT UPDATE DELETE Agit sur Relation

EJB

Entit

Champs ou proprits Mise en correspondance

Entit

SQL natif Compilation

Base de donnes

Annotations, descripteur de dploiement ou les deux

3-22

Copyright 2007, Oracle. Tous droits rservs.

Ecrire des instructions SELECT JPA QL de base

Syntaxe d'une instruction SELECT JPA QL :


SELECT [DISTINCT] select_expression FROM abstract_schema_name [AS] identifier_variable [WHERE conditional_expressions(s)] [ORDER BY order_by_item(s)]

Exemple d'interrogation nomme JPA QL :


Rechercher tous les produits
@NamedQuery(name = "Products.findAll", query = "select o from Products o"),

3-23

Copyright 2007, Oracle. Tous droits rservs.

Synthse

Ce chapitre a trait des sujets suivants : expliquer le concept de persistance et comment les entits JPA l'implmentent crer un mapping relationnel objet l'aide d'annotations pour amliorer les beans Entity identifier une interrogation nomme et l'utiliser efficacement dans une application

3-24

Copyright 2007, Oracle. Tous droits rservs.

Вам также может понравиться