Les avantages JPA

publicité
HIBERNATE ET JPA
2012
Introduction
A ce jour, la plate-forme Java est utilisée par plus de 9 millions de développeurs de logiciels.
Elle est présente dans tous les secteurs industriels majeurs et couvre toute une gamme de
dispositifs, d'ordinateurs et de réseaux. Grâce à sa flexibilité, son efficacité, la portabilité de sa
plate-forme et sa sécurité, la technologie Java est devenue la solution idéale pour
l'informatique de réseau. Des ordinateurs portables aux centres de données, des consoles de
jeux aux superordinateurs scientifiques, des téléphones portables à Internet, la technologie
Java est présente sur tous les fronts .
En Java, nous disposons de la Java Persistence API (abrégée JPA), une interface de
programmation qui constitue une couche au-dessus de JDBC. Elle permet de rendre
transparente la couche JDBC et de faire le lien entre une base de données relationnelle et des
objets Java. Ainsi, les accès directs à la base de données sont remplacés par des appels à
des méthodes objet de haut niveau et l'application manipule uniquement des objets,
s'affranchissant de l'aspect relationnel des bases de données.
1
HIBERNATE ET JPA
2012
I/HIBERNATE
1/Définition :
●Hibernate est une solution open source de type ORM (Object Relational
Mapping) qui permet de faciliter le développement de la couche
persistance d'une application. Hibernate permet donc de représenter une
base de données en objets Java et vice versa.
●Hibernate facilite la persistence et la recherche de données dans une
base de données en réalisant lui même la création des objets et les
traitements de remplissage de ceux-ci en accédant à la base de
données. La quantité de code ainsi épargnée est très importante
d'autant que ce code est généralement fastidieux et redondant.
●Hibernate est très populaire notamment à cause de ses bonnes
performances et de son ouverture à de nombreuses bases de données.
Les bases de données supportées sont les principales du marché : DB2,
Oracle, MySQL, PostgreSQL, Sybase, SQL Server, Sap DB, Interbase, ...
●Hibernate est un logiciel écrit sous la responsabilité de Gavin King, qui
fait entre autre partie de l'équipe de développement de JBOSS.
L'ensemble des données nécessaires au fonctionnement de l'application
sont sauvegardées dans une base de données. La manipulation des
données peut se faire de différentes manières : Par l'accès directement à
la base en écrivant les requêtes SQL adéquates. Utiliser un outil d'ORM
(object Relationnal Mapping) permettant de manipuler facilement les
données et d'assurer leur persistance. Il en existe plusieurs.
Pourquoi ajouter une couche entre l'application et la base de données ?
●L'objectif est de réduire le temps de développement de l'application en
éliminant une grande partie du code SQL à écrire pour interagir avec la
base de données et en encapsulant le code SQL résiduel. Les
développeurs manipulent les classes dont les données doivent être
persistantes comme des classes Java normales. Seules une initialisation
correcte d'hibernate doit être effectuée, et quelques règles respectées lors
de l'écriture et de la manipulation des classes persistantes.
2
HIBERNATE ET JPA
2012
2/ l'architecture d'Hibernate :
Hibernate est un framework qui gère la persistance des objets en base de
données.
Ce projet ne repose sur aucun standard mais il est populaire notamment grâce à
ses bonnes performances et son ouverture avec de nombreuses base de
données .
Voici une vue (très) haut niveau de l'architecture d'Hibernate :
Architechture de Hibernate
Ce diagramme montre Hibernate utilisant une base de données et des données de configuration
pour fournir un service de persistance (et des objets persistants) à l'application.
3
HIBERNATE ET JPA
2012
L'architecture la plus complète abstrait l'application des APIs JDBC/JTA sous-jacentes et laisse
Hibernate s'occuper des détails.
Architechture de Hibernate
3/Les avantages et Les inconvénients d’Hibernate:
♦ Les avantages :
*Hibernate génère le code SQL nécessaire, ce qui rend l'application plus portable (s'adapte à la base
de données)
*La persistance est transparente. Vous pouvez faire de vos classes métiers des classes persistantes
sans ajout de code.
4
HIBERNATE ET JPA
2012
*La récupération de donées est optmisée. On peut intérroger la base de données de plusieur façon
(Requête SQL, langage HQL...)
*Portabilité du code en cas de changement de la base de données
♦Les inconvénients :
*Il est dure de faire des requètes complexe avec HQL (ex: sous requêtes)
*Etant une technologie jeune, il rest des problèmes à résoudre (ex: les
fichiers de mapping ne sont pas toujour bien formés)
*Ne se base pas sur les standards
II/La Java Persistence API (JPA)
1/Définition :
La Java Persistence API (abrégée en JPA), est une interface de
programmation Java permettant aux développeurs d'organiser
des données relationnelles dans des applications utilisant la
plateforme Java.
La Java Persistence API est à l'origine issue du travail du groupe
d'experts JSR 220.
La persistance dans ce contexte recouvre 3 zones :
●l'API elle-même, définie dans le paquetage javax.persistence.
●e langage Java Persistence Query (JPQL) .
●l'objet/les métadonnées relationnelles.
L’API de persistance de Java, JPA, a deux aspects :
●Le premier est la possibilité d’associer des objets à une base de données
relationnelle. La configuration par exception permet aux fournisseurs de
persistance de faire l’essentiel du travail sans devoir ajouter beaucoup de
code, mais la richesse de JPA tient également à la possibilité d’adapter ces
associations à l’aide d’annotations ou de descriptions XML. Que ce soit une
modification simple (changer le nom d’une colonne, par exemple) ou une
adaptation plus complexe (pour traduire l’héritage), JPA offre un large
spectre de possibilités. Vous pouvez donc associer quasiment n’importe
quel modèle objet à une base de données existante.
5
HIBERNATE ET JPA
2012
●Le second aspect concerne l’interrogation de ces objets une fois qu’ils ont
été associés à une base. Élément central de JPA, le gestionnaire d’entités
permet de manipuler de façon standard les instances des entités. Il fournit
une API pour créer, rechercher, supprimer et synchroniser les objets avec
la base de données et permet d’exécuter différentes sortes de requêtes
JPQL sur les entités, comme des requêtes dynamiques, statiques ou
natives. Le gestionnaire d’entités autorise également la mise en place de
mécanismes de verrouillage sur les données
2/Les specification de JPA :
Toutes les classes et les annotations de cette API sont dans
le javax.persistence paquet.iLes principales composantes de l'APP sont les
suivantes:
♦Object-Relational Mapping (ORM) , qui est le mécanisme d'objets
cartographiques à des données stockées dans une base de données
relationnelle.
♦Une API gestionnaire d'entités de base de données pour effectuer des
opérations liées, telles queCreate, Read, Update, Delete (CRUD) des
opérations. Cette API vous permet d'éviter d'utiliser l'API JDBC
directement.
♦Le langage Java Persistence Query (JPQL), ce qui vous permet de
récupérer des données avec un langage de requête orienté objet.
♦Les transactions et les mécanismes de verrouillage lors de l'accès aux
données simultanément fournis par Java Transaction API (JTA).
Ressources locales (non JTA) les transactions sont également pris en
charge par l'APP.
♦Rappel et les auditeurs pour accrocher la logique métier dans le cycle de
vie d'un objet persistant.
3/L’architecture de JPA :
6
HIBERNATE ET JPA
2012
Diagramme Architecture de JPA
LE SCHEMA CI-DESSOUS ILLUSTRE LES RELATIONS ENTRE LES PRINCIPALES COMPOSANTES
DE L'ARCHITECTURE
JPA.
Les
Diagramme Architecture de JPA
7
HIBERNATE ET JPA
2012
4/Les avantages et Les inconvénients de JPA:
Les avantages JPA :
• Recherche automatique des déployée métadonnées
• Configuration standardisée
- Unité Persistance
• Code normalisé de l'accès aux données, cycle de vie, et la capacité de
• Peut remplacer les annotations avec descripteur de fichier
Les inconvénients JPA :
• Bien que les interfaces standards sont belle, quelque peu
spec clémence peut présenter des lacunes lors de la commutation
implémentations des fournisseurs
- Non pris en charge toutes les stratégies de succession
- Le fichier 'normalisé' descripteur est essentiellement un wrapper autour
de fournisseur
implémentations spécifiques
• Absence de certains aspects bénéfiques de Hibernate
- Requête par l'exemple, la requête par critère (attendu plus tard)
EntityManager propagation à travers les méthodes / objets -Collection
Filtres - Cache niveau 2
- Autres postes mineurs que les développeurs peuvent venir s'appuyer sur
• Plus-encore que la plupart des implémentations spécifiques au
fournisseur,la tentation est là pour utiliser les fonctionnalités spécifiques
au fournisseur de remplir le écart - mais alors, plus portable
8
HIBERNATE ET JPA
2012
III/La différence entre JPA et Hibernate
APP est un cadre de gestion des données relationnelles dans les
applications Java, tandis que Hibernate est une implémentation spécifique
de l'APP (si idéalement, JPA et Hibernate ne peut pas être directement
comparés). En d'autres termes, Hibernate est l'un des cadres les plus
populaires qui met en œuvre des APP. Hibernate implémente JPA
Hibernate Annotation par EntityManager et les bibliothèques qui sont
mises en œuvre sur le dessus des bibliothèques Hibernate Core. Les deux
EntityManager et annotations suivre le cycle de vie d'Hibernate. La
nouvelle version de JPA (JPA 2.0) est entièrement pris en charge par
Hibernate 3.5. APP a l'avantage d'avoir une interface qui est normalisé, de
sorte que la communauté des développeurs seront plus familiers avec elle
que Hibernate. D'autre part, natif Hibernate API peut être considéré
comme plus puissant parce que ses caractéristiques sont un sur-ensemble
de celui de l'APP.
1/Les composants d’HIBERNATE et JPA :
JPA
HIBERNATE
Entity Classes
Persistent Classes
EntityManagerFactory
SessionFactory
EntityManager
Session
Persistence
Configuration
EntityTransaction
Transaction
Query
Persistence Unit
Query
Hibernate Config
9
HIBERNATE ET JPA
2012
Conclusion
Java offre la possibilité réelle que la plupart des programmes peuvent être
écrits dans une langue de type sécurisé. Cependant, pour Java à être
largement utile, il doit avoir plus de puissance expressive qu'elle ne le fait
à l'heure actuelle.
10
Téléchargement