GLG203 - TP13
Page
- dernière modification par Pascal GRAFFION le 2011/06/28 16:13
Entity manager ........................................................................................................................................................................................................................................................ 2
Expression des besoins ............................................................................................................................................................................................................................................. 4
Analyse et conception ................................................................................................................................................................................................................................................ 4
Vue logique ................................................................................................................................................................................................................................................................. 4
Vue processus ........................................................................................................................................................................................................................................................... 4
Vue implémentation ................................................................................................................................................................................................................................................. 4
Architecture .............................................................................................................................................................................................................................................................. 4
Vue déploiement ....................................................................................................................................................................................................................................................... 4
Implémentation ............................................................................................................................................................................................................................................................. 4
Recette utilisateur ........................................................................................................................................................................................................................................................ 4
Résumé ........................................................................................................................................................................................................................................................................... 4
Références ..................................................................................................................................................................................................................................................................... 5
TP 13 - Persistence avec JPA
La persistance des données en EJB 3 a été complètement réarchitecturée au travers de JPA (Java Persistence
API). Alors que nous parlions de composants persistants en EJB 2.x, JPA se recentre sur de simples classes
Java. En EJB 2.x la persistance ne pouvait être assurée qu’à l’intérieur du conteneur alors qu’avec JPA elle peut
être utilisée dans une simple application JSE (Java Standard Edition).
Hello PetStore !
Dans le modèle de persistance JPA, un entity bean est une classe java simple (un Pojo) complétée par de
simples annotations :
@Entity // 1
public class Book {
@Id // 2
private Long id;
@Column(nullable = false) // 3
private String title;
private Float price;
@Column(length = 2000) // 3
private String description;
private String isbn;
// ...
Notez la présence d’annotations à plusieurs endroits dans la classe Book :
1. tout d’abord, l’annotation @javax.persistence.Entity permet à JPA de reconnaître cette classe comme une
classe persistante et non comme une simple classe Java.
1. L’annotation @javax.persistence.Id, quant à elle, définit l’identifiant unique de l’objet. Elle donne à l’entity
bean une identité en mémoire en tant qu’objet, et en base de données via une clé primaire. Les autres
attributs (description, isbn, ...) seront rendus persistants par JPA en appliquant les paramétrages par
défaut : le nom de la colonne est identique à celui de l’attribut et le type String est converti en varchar(255).
1. L’annotation @javax.persistence.Column permet de préciser des informations sur une colonne de la table :
changer son nom (qui par défaut porte le même nom que l’attribut), préciser son type, sa taille et si la
colonne autorise ou non la valeur null.
Entity manager
Quand on veut rendre persistent en base de données un entity bean (ou une entité), il faut utiliser un entity
manager. Il est logique d’encapsuler cet entity manager dans un DAO (Data Access Object) :
public class BookDAO {
private EntityManager em;
private EntityTransaction tx;
public BookDAO() {
// Gets an entity manager and a transaction