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 :

Champs "virtuels" ou méthode ou autre?


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 109
    Points : 32
    Points
    32
    Par défaut Champs "virtuels" ou méthode ou autre?
    Bonjour.

    J'ai une question liée à Hibernate.

    J'ai deux tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Compteur : (compteur électrique ou d''eau...)
    - cpt_id
    - numero
    - nom
     
    ReleveIndex (les relevés du compteur)
    - rel_id 
    - date
    - index
    - cpt_id
    Lors de l'utilisation d'hibernate Tools, deux classes ont été générées (je ne vous ai pas indiqué les get et set):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Compteur :
    ...
    - id
    ...
    - numero
    ...
    - nom
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "compteur")
    - Set<ReleveIndex> = releves
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ReleveIndex
    ...
    - id
    ...
    - date
    ...
    - index
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "CPT_ID", nullable = false)
    - Compteur compteur
    J'ai aussi créé des DAO permettant de mettre certaines requetes (avec des criteria) liées à chaque objet.
    Jusqu'à là, tout va bien.

    Je me posais une question sur la saisie d'un nouvel index.
    Sur l'écran de saisie, j'aurai aimé afficher le dernier index saisi du compteur.

    Je ne sais donc pas si :
    1 / dans la classe java, avant l'arrivée sur la JSP, je dois :
    - appeler un ReleveIndexDAO pour faire quelque chose du genre : getDernierReleve(id_du_comteur) qui retourne donc un releve
    2/ creer uniquement une methode dans la classe Compteur qui est getDernierReleve(). Celle-ci pourrait alors soit appeler une DAO, soit itérer sur le set de releves qui correspond à l'ensemble des releve
    3/ creer un champs : ReleveIndex dernierReleve dans la classe compteur qui pourrait alors être alimenté par Hibernate ou par une méthode (cf point 2)

    Je ne sais pas ce qui est le mieux, et ce que peut proposer Hibernate sur cette problématique.
    Et confirmer vous que lors de la génération des classes avec Hibernate Tools (Reverse ingenering), tous les éléments du points 2 et 3 vont bien sûr être "écrasé" par l'outil?


    Merci d'avance pour vos idées ou solutions.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Pour moi, ça n'a rien à voir avec l'entity de Compteur, c'est une demande purement fonctionnelle, qui n'a rien à voir avec la structure de la base de données (actuelle).

    Ce que tu peux imaginer par contre, c'est l'utilisation d'un DTO qui inclura le dernier relevé pour ta vue de saisie du relevé de compteur.

    Si par contre tu veux accélérer le traitement et utiliser les entity uniquement, tu peux rajouter une colonne id_dernier_relevé dans ta table compteur et laisser hibernate charger l'objet associé (en Lazy à priori).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2011
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Août 2011
    Messages : 109
    Points : 32
    Points
    32
    Par défaut
    Rajouter l'id_dernier_relevé est pas mal, ca correspond à mon point 3.
    Sinon, en lisant la doc et le net, il est indiqué des notion de @Filter.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Filter(name = LATEST_FILTER, condition = "DATE =
       (select max(M.DATE) from MATABLE M where ....")
    mais bon, ca fait rajouter du code dans l'entity Compteur qui est liée avec la base...

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