JPA - Free

publicité
JPA
Créer un nouveau projet Java
File/new/Java Project
Nommez le projet tp-jpa
Copiez dans le projet le répertoire lib (contient les bibliothèques hibernate)
http://fichiers.partage.free.fr/files/jpa-lib.zip
et le répertoire db (contient la bibliothèque hsqldb)
http://fichiers.partage.free.fr/files/jpa-db.zip
Ajoutez tous les jars dans le classpath du projet.
placer dans le répertoire src un fichier log4j.properties contenant les paramètres suivants:
log4j.debug=false
log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.logger.org.hibernate=DEBUG
Préparer la base de données
Modifiez le fichier db\runserver.bat contenant les commandes suivantes:
set projectroot=[votre workspace]\tp-jpa
java -cp %projectroot%\db\hsqldb.jar org.hsqldb.Server -database.0
file:%projectroot%\dbfiles\jpatestDB -dbname.0 jpatest
Modifiez le fichier runmanager.bat contenant la commande suivante:
java -cp [votre workspace]\tp-jpa\db\hsqldb.jar org.hsqldb.util.DatabaseManager
-driver org.hsqldb.jdbcDriver -url jdbc:hsqldb:hsql://localhost/jpatest -user sa
Pour modifier: Open with text editor.
Pour exécuter: Open with system editor.
Exécutez runserver.bat et runmanager.bat
Créez un fichier META-INF\persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="tpjpa-pu" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.connection.driver_class"
value="org.hsqldb.jdbcDriver" />
<property name="hibernate.connection.username" value="sa" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.connection.url"
value="jdbc:hsqldb:hsql://localhost/tpjpa"/>
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
Créer le modèle
Dans le répertoire src, créez un package nommé entity.
Créez le modèle du domaine: des classes annotées.
Créez une classe Bank et une classe Customer en recyclant le code du TP précédent.
Les attributs doivent être privés, les classes doivent être sérializable et posséder des getters et setters
pour les attributs ainsi qu'un constructeur par défaut.
Les classes doivent être annotées @Entity (importer javax.persistence.Entity)
Les identifiants sont annotés @Id @GeneratedValue
Ces classes étant utilisées dans des Collections, générez les méthodes equals et hashCode afin que
les tris puissent être effectués. Se limiter à l'attribut id pour la génération de ces méthodes.
Remplacez les attributs List représentant des associations 1-N par des collections gérées par l'API
JPA:
private List<Customer> customers = new ArrayList<Customer>();
devient
@OneToMany(cascade=CascadeType.ALL, mappedBy = "bank")
private Set<Customer> customers = new HashSet<Customer>();
L'opposé du lien 1-N est codé ainsi:
@ManyToOne
private Bank bank;
Implémentez une classe de test:
public class EntityManagerTest {
EntityManagerFactory emf;
public void test() {
emf = Persistence.createEntityManagerFactory("tpjpa-pu");
if (emf == null)
throw new RuntimeException("EntityManagerFactory is null");
emf.close();
}
public static void main(String[] args) {
new EntityManagerTest().test();
}
}
Lancez le serveur de base de données avec la commande runserver.bat.
Exécutez cette classe.
Lancer l'administrateur de la base de données avec la commande runmanager.bat.
Examinez le résultat produit, commentez.
Insérez le code suivant, exécutez, commentez.
Customer cust= new Customer("Jean Dupognon");
Customer cust2= new Customer("Paul Duflouze");
Customer cust3= new Customer("Pierre Palnord");
Bank bank = new Bank("Internet Bank");
Bank bank2 = new Bank("Credit Arboricole");
bank.addCustomer(cust);
bank.addCustomer(cust2);
bank2.addCustomer(cust3);
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(bank);
em.persist(bank2);
em.getTransaction().commit();
em.close();
[email protected] JEE 2007-2008
Téléchargement