Dans ce TP, nous allons reprendre le code du premier TP et le compléter pour gérer un autre moyen de persistance des objets via JPA au lieu de JDBC.
Sous Netbeans, il est possible d'obtenir automatiquement le code Java de POJO avec les annotations JPA à partir de la structure d'une base. Pour cela, il faut :
Attention, les POJO Sport et Discipline existent
déjà dans le code du premier TP, dans le
package donnees
. Il faut que le code que vous allez
rajouter pour l'implémentation JPA manipule ces POJO existant pour
une compatibilité avec l'implémentation JDBC.
Travail à réaliser
Etape 1 : vérification du fonctionnement de JPA pour la base de données
data
par exemple). Notez bien le nom de l'unité
de persistance qui sera indispensable pour gérer les POJO. Celle-ci se
retrouve et peut se modifier dans le
fichier persistence.xml
du
répertoire META_INF
import data.Sport;
import data.Discipline;
import javax.persistence.*;
public class Test {
public static void main(String argv[]) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("SportsPU");
EntityManager em = emf.createEntityManager();
int cle = 1;
Sport sport = em.find(Sport.class, new BigDecimal(cle));
System.out.println("Le sport " + cle + " est " + sport.getIntitule());
for (Discipline disc : sport.getDisciplines()) {
System.out.println(" -> " + disc.getIntitule());
}
}
}
Etape 2 : ajout du support JPA dans l'architecture en DAO et fabriques du TP2
donnees
. Il y a
quelques différences comme la clé qui est un int
au lieu
d'un BigDecimal
empêchant les POJO générés de remplacer
directement les POJO originaux.donnees
donnees
. Vérifiez que cela fonctionne comme
avant.DAO_JPA_Sport
et DAO_JPA_Discipline
héritant de la classe abstraite DAO
Sports_JPA_DAO_Factory
héritant de la classe abstraite SportsDAOFactory
AbstractDAOFactory
pour gérer le cas de JPA.