Académique Documents
Professionnel Documents
Culture Documents
L'api JPA
II. Pré-requis
Pour réaliser ce TP vous aurez besoin de :
Lancer l'exécutable se trouvant dans le dossier ../tools/MySQL 5.0/Setup.exe et suivez les étapes
suivantes :
Installer l'administrateur. Pour ceci, cliquer sur l'exécutable se trouvant dans le dossier
Formation_Hibernate/tps/tools/MySQL 5.0/mysql-gui-tools-5.0-r17-win32 et suivez les étapes
suivantes :
Cliquer sur OK :
Entrer le nom de votre nouveau schéma (par exemple formation) et cliquer sur le bouton OK.
Créer la bibliothèque utilisateur JPA_HIBERNATE. Pour ceci, dans Eclipse, cliquer sur Window ==>
Preferences :
De la même manière, créer la bibliothèque DIVERS et ajouter le driver de la base de données MySQL 5.0 et
le JAR de log4j :
persistence.xml
Configurer votre user/password. Dans ce fichier, username est root et password est admin.
Configurer l'URL. Dans ce fichier, l'URL est jdbc:mysql://localhost:3306/formation
Dans le package dao, créer la classe SessionBuilder, l'interface IDao et la classe DaoImpl :
package dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.apache.log4j.Logger;
private SessionBuilder() {
}
package dao;
import java.util.List;
import modele.Personne;
package dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
import org.apache.log4j.Logger;
import modele.Personne;
package modele;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Personne {
@GeneratedValue
@Id
private int identifiant;
private String pseudo;
private String mail;
private String codePostal;
public Personne() {
super();
}
package test;
import java.util.List;
import modele.Personne;
import dao.DaoImpl;
import dao.IDao;
Personne
Etudiant Professeur
La classe Personne.java :
package modele;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Personne {
@GeneratedValue
@Id
private int identifiant;
public Personne(String pseudo, String mail, String codePostal) {
super();
this.pseudo = pseudo;
this.mail = mail;
this.codePostal = codePostal;
}
@Override
public String toString() {
return "Personne [identifiant=" + identifiant + ", pseudo=" + pseudo
+ ", mail=" + mail + ", codePostal=" + codePostal + "]";
}
public Personne() {
super();
}
La classe Professeur.java :
package modele;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
@Entity
@PrimaryKeyJoinColumn(name="id")
public class Professeur extends Personne {
private String diplome;
@Override
public String toString() {
return "Professeur : " + diplome + " " + getIdentifiant() + " "
+ getPseudo();
}
public Professeur() {
super();
}
La classe Etudiant.java :
package modele;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
@Entity
@PrimaryKeyJoinColumn(name="id")
public class Etudiant extends Personne {
private Date dateInscription;
public Etudiant() {
super();
}
La classe Test.java :
package test;
import java.util.Date;
import java.util.List;
import modele.Etudiant;
import modele.Personne;
import modele.Professeur;
import dao.DaoImpl;
import dao.IDao;
private static void addProfesseur(String pseudo, String mail, String codePostal,String diplome) {
dao.add(new Professeur(pseudo,mail,codePostal,diplome));
private static void addEtudiant(String pseudo, String mail, String codePostal,Date dateInscription)
{
dao.add(new Etudiant(pseudo,mail,codePostal,dateInscription));
}
display();
}
}
Noter que id est une clé étrangère référençant la colonne id de la table PERSONNE.
package modele;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="descriminateur")
@DiscriminatorValue(value="p")
public class Personne {
@Id
@GeneratedValue
private int identifiant;
private String pseudo;
private String mail;
private String codePostal;
@Override
public String toString() {
return "Personne" + identifiant + " " + pseudo;
}
public Personne() {
super();
// TODO Auto-generated constructor stub
}
public Personne(String pseudo, String mail, String codePostal) {
super();
this.pseudo = pseudo;
this.mail = mail;
this.codePostal = codePostal;
}
public int getIdentifiant() {
return identifiant;
}
public void setIdentifiant(int identifiant) {
this.identifiant = identifiant;
}
public String getPseudo() {
return pseudo;
}
public void setPseudo(String pseudo) {
this.pseudo = pseudo;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getCodePostal() {
return codePostal;
}
public void setCodePostal(String codePostal) {
this.codePostal = codePostal;
}
}
package modele;
import java.util.Date;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue("etud")
public class Etudiant extends Personne{
private Date dateInscription;
public Etudiant() {
super();
// TODO Auto-generated constructor stub
}
La classe Professeur :
package modele;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue("prof")
public class Professeur extends Personne{
private String diplome;
@Override
public String toString() {
return "Professeur : " + diplome + " " + getIdentifiant() + " " + getPseudo();
}
public Professeur(String pseudo, String mail, String codePostal,
String diplome) {
super(pseudo, mail, codePostal);
this.diplome = diplome;
}
public Professeur() {
super();
// TODO Auto-generated constructor stub
}
public String getDiplome() {
return diplome;
}
public void setDiplome(String diplome) {
this.diplome = diplome;
}
}
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class Personne {
@Id
private int identifiant;
public Personne(int identifiant,String pseudo, String mail, String codePostal) {
super();
this.identifiant = identifiant;
this.pseudo = pseudo;
this.mail = mail;
this.codePostal = codePostal;
}
private String pseudo;
private String mail;
private String codePostal;
@Override
public String toString() {
return "Personne" + identifiant + " " + pseudo;
}
public Personne() {
super();
}
public int getIdentifiant() {
return identifiant;
}
public void setIdentifiant(int identifiant) {
this.identifiant = identifiant;
}
public String getPseudo() {
return pseudo;
}
public void setPseudo(String pseudo) {
this.pseudo = pseudo;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getCodePostal() {
return codePostal;
}
public void setCodePostal(String codePostal) {
this.codePostal = codePostal;
}
}
La classe Etudiant :
package modele;
import java.util.Date;
import javax.persistence.Entity;
@Entity
public class Etudiant extends Personne{
private Date dateInscription;
@Override
public String toString() {
return "Etudiant : " + dateInscription.toString() + " " + getIdentifiant() + " " +
getPseudo();
public Etudiant() {
super();
}
La classe Professeur :
package modele;
import javax.persistence.Entity;
@Entity
public class Professeur extends Personne{
private String diplome;
@Override
public String toString() {
return "Professeur : " + diplome + " " + getIdentifiant() + " " + getPseudo();
}
public Professeur(int identifiant,String pseudo, String mail, String codePostal,
String diplome) {
super(identifiant,pseudo, mail, codePostal);
this.diplome = diplome;
}
public Professeur() {
super();
}
public String getDiplome() {
return diplome;
}
public void setDiplome(String diplome) {
this.diplome = diplome;
}
}
La classe Test :
package test;
import java.util.Date;
import java.util.List;
import modele.Etudiant;
import modele.Personne;
import modele.Professeur;
import dao.DaoImpl;
import dao.IDao;
display();
}
}