IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Appel d'une méthode à la persistance [Mapping]


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut Appel d'une méthode à la persistance
    Bonjour,

    Une refonte de la base de données de mon application est prévue. Aujourd'hui, ma bdd contient des tables pour chaque entité de l'application. A l'avenir, un certains nombres de données de références gérées par d'autres applis seront disponibles via des vues sur un schéma différent.

    Par exemple, mon appli gère une entité Site liée à une entité Département. Site est mappée sur une table dans le schéma de mon appli, Département est mappée sur une vue dans le schéma référentiel.

    Mon problème est que SQL ne permet pas de créer une contrainte de clé étrangère qui référence une colonne d'une vue. Du coup, à la persistance d'une entité, il n'y a pas de mécanisme pour vérifier l'intégrité des données au niveau de la bdd.

    Mon idée est donc de faire cette vérification programmatiquement : à chaque création/màj, appeler une méthode qui va vérifier qu'une entité du référentiel existe bien.

    Est-ce qu'Hibernate propose un mécanisme permettant de faire ça ?

    Cordialement.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour, peut on savoir sur quel SGBD vous travaillez? une vue en soit est une table d'un point de vue JPA, tu peux donc très bien mapper une entité JPA sur une vue, sauf que là tu as un second problème qui se pose, tes vues ne sont visiblement pas dans le même schéma que tes tables principales, dans ce cas si tu es sous Oracle, tu peux créer la notion "Synonyme Oracle" ce qui donne l'avantage d'avoir l'impression de travailler dans un seul schéma. et donc dans ton mapping tu mettras la contrainte de non nullité lors de tes jointures

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Suite à cette refonte, on sera sur Oracle 11.2.

    Effectivement, les vues sont dans des schémas séparés de celui des tables. Mais ce n'est pas ça qui me pose problème, ni les contraintes de non nullité.

    Ce que je veux, c'est simuler les FK que je ne peux pas créer en SQL. Pour reprendre mon ex. du premier post :
    Au niveau de ma bdd, j'ai une table SITE avec une colonne DEPARTEMENT_ID qui doit contenir les données d'une vue V_DEPARTEMENT.
    Au niveau Hibernate, j'ai une entité Site qui possède un attribut de type Departement.
    Maintenant, je souhaiterais que dès qu'Hibernate effectue une opération de création ou de màj d'une entité Site, il appelle une méthode spécifique qui vérifierais que la vue V_DEPARTEMENT contient bien le Departement lié au Site.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par Nertios Voir le message
    Suite à cette refonte, on sera sur Oracle 11.2.

    Effectivement, les vues sont dans des schémas séparés de celui des tables. Mais ce n'est pas ça qui me pose problème, ni les contraintes de non nullité.

    Ce que je veux, c'est simuler les FK que je ne peux pas créer en SQL. Pour reprendre mon ex. du premier post :
    Au niveau de ma bdd, j'ai une table SITE avec une colonne DEPARTEMENT_ID qui doit contenir les données d'une vue V_DEPARTEMENT.
    Au niveau Hibernate, j'ai une entité Site qui possède un attribut de type Departement.
    Maintenant, je souhaiterais que dès qu'Hibernate effectue une opération de création ou de màj d'une entité Site, il appelle une méthode spécifique qui vérifierais que la vue V_DEPARTEMENT contient bien le Departement lié au Site.
    J'ai bien compris ton besoin, tu peux le faire programmatiquement, c'est à dire qu'avant d'effectuer ta mise à jour ou ta création de Site tu fasses un findById de l'identifiant du département que tu veux associer au Site (en cours de creation/modification) , et ce resultat te retourne null tu lèves une exception. Ou tu passes par une méthode listener sur une entité (méthode call back), dans laquelle tu décris l'action à faire en cas de création/modification d'un Site.Lien pour les listeners jpa

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 55
    Par défaut
    Ou tu passes par une méthode listener sur une entité (méthode call back), dans laquelle tu décris l'action à faire en cas de création/modification d'un Site.
    Ca m'a l'air de correspondre à ce que je recherche. Merci.

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par Nertios Voir le message
    Ca m'a l'air de correspondre à ce que je recherche. Merci.
    Si tu préfères, mais perso je ne suis pas fan de ces méthodés call back, pour la raison qu'elles ne sont pas très maintenables,c'est facile d'oublier qu'elles existent lors d'une évolution. Il faut remonter jusqu'au code des entités pour s'apercevoir qu'elles existent, or on s'arrête souvent qu'au niveau des services lors d'une revue de code ou d'une recherche de bug, mais ça te convient, eh ben tant mieux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une méthode virtuelles
    Par BIPBIP59 dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/03/2006, 14h00
  2. Réponses: 2
    Dernier message: 29/12/2005, 10h25
  3. Réponses: 2
    Dernier message: 06/12/2005, 09h41
  4. Réponses: 6
    Dernier message: 27/05/2005, 15h43
  5. Comment connaitre l'appelant d'une méthode
    Par Alec6 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/07/2004, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo