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 :

principes et généralités sur hibernate


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
    Juin 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Par défaut principes et généralités sur hibernate
    J’ai récemment commencé à étudier l’outil Hibernate et je me suis posé des questions comme :
    Faut il définir les clés étrangères dans la base de donné ou juste mettre une colonne de même type que la clé de l’autre table ?
    Si je ne met pas de clés étrangère j’aurai pas à définir les « many-to-one » ou les « set » et je crois que c’est plus simple.
    Autre chose, pour les sessions et les transactions, j’utilise l’outil MyEclipse qui génère automatiquement une classe utilitaire ( par expl : pr une table PERSONNE, il génère une classe PeersonneDAO) qui permet d’utiliser certaines méthodes comme la méthode getSession() et save(), ma question est : est ce qu’on peut ouvrir une session avec getSession() d’un objet de type PersonneDAO et utiliser la methode save de deux objet différents ? en d’autre terme, la session permet elle de manipuler les objets de meme type seulement ou de type différents ?
    Si quelqu’un peut m’éclairer alors je le remercie d’avance.

    Voici un exemple de code sure qui illustre la dernière question :

    PersonneDAO dao=new PersonneDAO();
    Transaction tx=dao.getSession().beginTransaction();
    dao.save(personne);
    tx.commit();
    dao.getSession().close();
    VoitureDAO vdao=new VoitureDAO();
    Transaction tx2=vdao.getSession().beginTransaction();
    vdao.save(voiture);
    tx2.commit();
    vdao.getSession().close();

    ou faire:
    PersonneDAO dao=new PersonneDAO();
    Transaction tx=dao.getSession().beginTransaction();
    dao.save(personne);
    VoitureDAO vdao=new VoitureDAO();
    vdao.save(voiture);
    tx.commit();
    dao.getSession().close();

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Alors pour la question des clés étrangères, c'est beaucoup plus propre à mon sens de les définir en base. Sinon tu n'auras jamais aucune garantie de ce que contient ta base (tu ne peux jamais être certain que ta bdd sera accédée uniquement par ton appli).

    Pour ce qui est des dao et de la session, si tu mettais le code généré de PersonneDAO je pourrais surement te répondre (je ne connais pas MyEclipse)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Par défaut
    Salut,

    Je suis d'accord avec chtig, c'est quand même plu propre que la base de données comprennent les règles de clés étrangères. Cependant ce n'est pas négligeable de paramétrer Hibernate aussi mais c'est plus compliqué je te l'accorde.

    Sinon j'ai déjà utilisé MyEclipse et je n'ai pas le souvenir qu'il produisait des classes dite de session propre à chaque entités (personne, voiture...). Il me semble qu'il crée une classe Session (de souvenir HibernateSessionFactory.java) qui te permet de créer, récupérer, fermer une session... quelque soit l'objet que tu utilises :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Transaction tx = null;		
    try {
            Session session = HibernateSessionFactory.getSession();
            tx = session.beginTransaction();
            session.save("Obket que tu veux sauvegarder en base");
            tx.commit();		
          }catch(HibernateException e) {
    	if (tx != null && tx.isActive()){
    	tx.rollback();
          }
    Sinon pour la génération des classes de mappings j'utilise Hibernate Synchroniser qui se connecte à ta base et te les créer automatiquement.

    @+

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

Discussions similaires

  1. Questions sur Hibernate
    Par errant dans le forum Hibernate
    Réponses: 3
    Dernier message: 27/03/2006, 14h18
  2. sql-server 2000 généralités sur sql-server ( débutant)
    Par ducho dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 28/02/2006, 18h10
  3. [Hibernate]Question sur Hibernate
    Par elhani dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/12/2005, 15h39
  4. [Hibernate]comprendre la cache sur hibernate
    Par ujoodha dans le forum Hibernate
    Réponses: 16
    Dernier message: 29/08/2005, 09h02

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