Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
enseignement:tp:bd:tp-orm:2012 [2012/10/14 16:37] ecoquery créée |
enseignement:tp:bd:tp-orm:2012 [2012/10/15 13:05] ecoquery [Projet embryonnaire] |
||
---|---|---|---|
Ligne 22: | Ligne 22: | ||
===== Schema relationnel ===== | ===== Schema relationnel ===== | ||
- | On considère le schéma relationnel fourni dans un des fichiers suivants (selon le SGBD choisi): {{|schema PostgreSQL}}, | + | On considère le schéma relationnel fourni dans un des fichiers suivants (selon le SGBD choisi): {{: |
Utiliser le script choisi pour créer les tables: | Utiliser le script choisi pour créer les tables: | ||
Ligne 32: | Ligne 32: | ||
Maven est un utilitaire de compilation/ | Maven est un utilitaire de compilation/ | ||
- | Configurer Maven comme indiqué [[:enseignement: | + | Configurer Maven comme indiqué [[enseignement: |
- | Télécharger et décompresser le projet de base: {{: | + | Télécharger et décompresser le projet de base: {{: |
- | + | ||
- | <code shell> | + | |
- | hg clone https:// | + | |
- | </ | + | |
Un projet Maven possède deux répertoires de sources: src/main et src/test. Le premier contient les classes " | Un projet Maven possède deux répertoires de sources: src/main et src/test. Le premier contient les classes " | ||
Ligne 46: | Ligne 42: | ||
Le fichier '' | Le fichier '' | ||
- | Le fichier '' | + | Le fichier '' |
- | <code xml> | + | |
- | <?xml version=" | + | |
- | < | + | |
- | | + | |
- | | + | |
- | | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | Si la connection de fonctionne pas, changer '' | + | <note tip>Si vous utilisez Oracle, ces deux fichiers sont à modifier |
===== Travail demandé ===== | ===== Travail demandé ===== | ||
Ligne 78: | Ligne 55: | ||
=== Tester le mapping === | === Tester le mapping === | ||
- | Le mapping relationnel objet peut être tester à travers le [[: | + | Le mapping relationnel objet peut être tester à travers le [[: |
- | <code java> | + | Cette classe est exécutable directement comme test JUnit dans Eclipse ou Netbeans. |
- | package bdav.tporm; | + | |
- | + | === Divers === | |
- | import javax.persistence.EntityManager; | + | * Lorsqu’une entité/ |
- | import javax.persistence.Persistence; | + | * Les annotations @Column, @JoinColumn, |
- | + | * Changer '' | |
- | import junit.framework.TestCase; | + | * L' |
- | + | * Classe Film sans association. On pourra utiliser/ | |
- | public | + | |
- | + | @Entity(name = " | |
- | public void testEntityManager() { | + | public class Film implements Serializable { |
- | EntityManager em = Persistence.createEntityManagerFactory("pu").createEntityManager(); | + | private static final long serialVersionUID = 1L; |
- | em.getTransaction().begin(); | + | |
- | em.getTransaction().commit(); | + | @Id |
- | em.close(); | + | @GeneratedValue(generator = " |
+ | @SequenceGenerator(sequenceName = " | ||
+ | private int id; | ||
+ | |||
+ | private String titre; | ||
+ | |||
+ | private int annee; | ||
+ | |||
+ | public | ||
+ | return titre; | ||
+ | } | ||
+ | |||
+ | public void setTitre(String titre) { | ||
+ | this.titre | ||
+ | } | ||
+ | |||
+ | public int getAnnee() { | ||
+ | return annee; | ||
+ | } | ||
+ | |||
+ | public void setAnnee(int annee) { | ||
+ | this.annee = annee; | ||
+ | } | ||
+ | |||
+ | public int getId() { | ||
+ | return id; | ||
+ | } | ||
+ | |||
+ | |||
+ | // Généré dans Eclipse via "Source" | ||
+ | @Override | ||
+ | public int hashCode() { | ||
+ | final int prime = 31; | ||
+ | int result = 1; | ||
+ | result = prime * result + annee; | ||
+ | result = prime * result + id; | ||
+ | result = prime * result + ((titre == null) ? 0 : titre.hashCode()); | ||
+ | return result; | ||
+ | } | ||
+ | |||
+ | @Override | ||
+ | public boolean equals(Object obj) { | ||
+ | if (this == obj) | ||
+ | return true; | ||
+ | if (obj == null) | ||
+ | return false; | ||
+ | if (getClass() != obj.getClass()) | ||
+ | return false; | ||
+ | Film other = (Film) obj; | ||
+ | if (annee != other.annee) | ||
+ | return false; | ||
+ | if (id != other.id) | ||
+ | return false; | ||
+ | if (titre == null) { | ||
+ | if (other.titre != null) | ||
+ | return false; | ||
+ | } else if (!titre.equals(other.titre)) | ||
+ | return false; | ||
+ | return true; | ||
} | } | ||
- | |||
} | } | ||
</ | </ | ||
- | Cette classe est à placer dans le répertoire '' | + | * Classe Personne sans association |
- | === Divers === | + | * Classe Societe sans association |
- | * Lorsqu’une entité/ | + | * Association Film réalisé par Personne |
- | * Lorsque certaines tables ne correspondent pas nécessairement à une entité, il est possible d' | + | * Association Société produit Film |
- | * Les colonnes de type xml peuvent être mise en correspondance avec des colonnes de type String | + | * Classe Role ('' |
- | * Changer | + | * Associations liées |