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 :

[Hibernate] Where clause implicite


Sujet :

Hibernate Java

  1. #1
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut [Hibernate] Where clause implicite
    Bonjour,

    J'ai une application J2EE qui utilises hibernate et Oracle.

    Chacune de mes tables de mon application contient un champs "year" qui détermine la rangé de ma table est vaide pour quelle année.

    Donc, a tout coup, je dois ajouter "year=2011" à chacune de mes query, c'est vraiment lourd pour le programmeur.

    J'aimerais trouver une solution soit dans Oracle ou dans hibernate qui créerait un "Where year=?" implicite.

    Est-ce que quelqu'un pourrait me diriger vers une piste de solution? J'ai déja entendu parler de la sécurité par rangé dans Oracle... mais je me demande si ca pourrait m'être utile.

    Peut-etre qu'un bon vieux héritage dans mes entity bean pourrait faire le travail aussi?

    Qu'est-ce que vous en pensez?

    Merci!

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu peux éventuellement utiliser l'attribut where de la balise XML class, pour spécifier ton morceau de SQL.

  3. #3
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut
    Ok... mais je veux que la valeur du Where soit dynamique. Par exemple year=2010 ou year=2011, etc. mais sans que le programmeur ait à se soucier de cette clause.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Dynamique à partir de quoi, d'une donnée dans une table, de l'année en cours... ?

  5. #5
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Quand tu dis "à chacune des query", ça peut être dangereux.

    Par exemple, tu as peut-être des tables du genre utilisateur (pour le login) qui ne comportent pas cette colonne ?

    Et quelles query veut tu affecter ? Celles générées en java directement, celles faites par Criteria, les namedQueries ? Si tu n'utilises qu'une seule catégorie, tu peux facilement te créer une classe qui rajoutera (de façon paramétrée) la condition sur year.

  6. #6
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut
    Bien vu Rei

    J'avoue qu'un peu d'héritage ferait le travail dans mes entity bean.

    Je me demandais si le "Row-Level-security" dans Oracle. Est-ce que ca pourrait fonctionner pour moi?

    Je veux explorer tous les possibilités...

  7. #7
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Le RLS te donnera, selon ton utilisateur, un accès différent aux tables (tant en terme d'objet visible que d'objet insérable / modifiable). Cela signifie qu'il faudrait que tu paramètres ta connexion à la DB en fonction de ton année ? C'est une possibilité, mais étrange à mon sens.

    Comment évolue ton paramètre sur l'année ?

    Question annexe : est-ce que tu as beaucoup de modifications à faire, ou bien seulement de la consultation ? Dans ce dernier cas, et si ton année ne change que rarement (genre ... tous les ans ?), des vues feront parfaitement l'affaire.

  8. #8
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut
    J'avoue que RSL sonne un peu bisarre...

    La majorité des tables... comme tu dis verrons des nouvelles lignes s'ajouter a la fin de l'année... mais en général on les utilise en consultation.


    Dans mon front end, l'utilisateur peut choisir pour quelle année il veut obtenir des données... donc on peut basculer de 2010 a 2011 a partir de linterface utilisateur


    Je ne vois pas trop comment une vue pourrait m''aider par contre, il faudra quand meme que je passe mon année lorsque je ferai un SELECT sur ma vu n'est-ce pas? Je ne peux quand meme pas mettre mon année en dur sur mes vues, il faudrait que je modifie mes vues au runtime...

    Est-ce que je ne serais pas mieux avec un héritage au niveau de mes entity beans?

    Merci bcp!

  9. #9
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Ma question portait sur le fait de savoir si ton année évoluait "souvent" pour l'ensemble de tes query. Si par exemple un utilisateur ne pouvait requêter que l'année en cours, tu crées des vues avec en dur ton année sur chaque table, et zou Galinette tu as un script qui une fois par an te change tes vues ...

    Si par contre ton utilisateur peut choisir, alors effectivement ça devient une variable, et du coup tu ne vas pas avoir d'autre choix que de te faire une classe utilitaire qui te rajoute la condition ...

  10. #10
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut
    Merci Rei! Tes conseils me sont très utile!


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

Discussions similaires

  1. [MySQL] Champ 'Kaskroot' inconnu dans where clause
    Par visqueu dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/11/2010, 13h50
  2. requete pl/sql where clause
    Par megapacman dans le forum PL/SQL
    Réponses: 2
    Dernier message: 06/11/2006, 13h59
  3. Unknown column 'xx' in 'where clause'
    Par SaeZ dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/05/2006, 17h25
  4. Réponses: 2
    Dernier message: 27/04/2006, 09h25
  5. Réponses: 1
    Dernier message: 08/11/2005, 14h32

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