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

JDBC Java Discussion :

Comment créer DAO pour deux tables


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Homme Profil pro
    éléve ingénieur
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : éléve ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 57
    Points
    57
    Par défaut Comment créer DAO pour deux tables
    Bonjour tout le monde

    les jeunes comment je dois faire pour afficher dans un datatable les données du student incluant des données de SubjectDTO .

    par exemple moi je veux afficher les données suivantes : select s.name, s.age, sb.room from student s, subject sb Where s.id =sb.id;

    si vous avez une solution n'hésitez pas à me l'annoncer et merci

    StudentDTO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class StudentDTO {
     
       private String name;
       private String surname;
       private String age;
       private SubjectDTO subject;
     
      // getters, setters
    }



    SubjectDTO


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class SubjectDTO {
     
       private String name;
       private int room;
     
      // getters, setters
    }

    DAO :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    public StudentDAO {
     
       private final String SELECT_QUERY = "SELECT * FROM Student S JOIN Subject Sb ON (S.id = Sb.id)"
     
       public ArrayList<StudentDTO> getData() {
     
          ArrayList<StudentDTO> data = null;
          StudentDTO member = null;
          Connection con = null;
          PreparedStatement ps = null;
          ResultSet rs = null;
     
          try {
             con = OracleDAOFactory.getConnection();
             ps = con.prepareStatement(SELECT_QUERY);
             rs = ps.executeQuery();
             while (rs.next()) {
                member = new StudentDTO();
                member.setName(rs.getString(1));
                ...
                data.add(member);
             }
             return data;
          }
          catch (SQLException ex) {
             // body
          }
          finally {
             if (con != null) {
                con.close();
             }
          }
       }
    }

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Citation Envoyé par belhoussaine Voir le message
    par exemple moi je veux afficher les données suivantes : select s.name, s.age, sb.room from student s, subject sb Where s.id =sb.id;
    si vous avez une solution n'hésitez pas à me l'annoncer et merci
    Concrètement, je ne vois pas ce qui te pose problème !
    Dans ton DAO, tu fait exactement comme dans getData, à la différence près que tu ne créé pas des StudentDTO mais un nouvel objet qui contient les données dont tu as besoin.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    éléve ingénieur
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : éléve ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Points : 57
    Points
    57
    Par défaut
    Bonjour

    je travaille sur un projet purement objet c'est pour ça j'ai des petites difficultés , mon problème exactement c'est avec le constructeur .
    par exemple si j'ai une classe livre avec un id entier ( clé primaire) et le nomLivre String et idAuteur(foreign key) donc le constructeur prendra en parametre un int et String et int comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public livre (id int , String nomLivre,int idAuteur){
     
    this.id=id ; 
    this.nomLivre=nomLivre ; 
    this.idAuteur=idAuteur;
    }
    une autre classe auteur qui a un idAuteur(clé primaire) et le nomAuteur String .


    si je veux afficher les données du livre ainsi que le nom d'auteur ça je le connais en sql . mais au moment de l’implémentation de la méthode sur DAO le constructeur de la classe livre ne vas pas prendre en compte le type string du nom d'auteur . alors comment je vais faire dans ce cas ?

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Citation Envoyé par belhoussaine Voir le message
    je travaille sur un projet purement objet c'est pour ça j'ai des petites difficultés , mon problème exactement c'est avec le constructeur .
    Ce n'est pas forcément un problème de constructeur, ça peux être un problème de design !

    Citation Envoyé par belhoussaine Voir le message
    une autre classe auteur qui a un idAuteur(clé primaire) et le nomAuteur String .

    si je veux afficher les données du livre ainsi que le nom d'auteur ça je le connais en sql . mais au moment de l’implémentation de la méthode sur DAO le constructeur de la classe livre ne vas pas prendre en compte le type string du nom d'auteur . alors comment je vais faire dans ce cas ?
    Techniquement, si Auteur contient juste un idAuteur et un nomAuteur, franchement ça ne coutera rien de les ramener dans le résultat de ta requête et de faire un constructeur (Livre) qui prend un Auteur au lieu d'un idAuteur.
    En plus c'est ton code qui gère le parcours du resultSet, donc tu peux faire tout ce que tu veux (dans la limite du raisonnable).

    Tout cela dépend de la quantité de données que tu remontes de la base, et ce que tu en fait ensuite.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [A-07]: Un formulaire pour deux tables
    Par jserge dans le forum IHM
    Réponses: 11
    Dernier message: 01/02/2009, 02h13
  2. Réponses: 2
    Dernier message: 22/10/2008, 11h51
  3. logical standby pour deux tables
    Par fouad77fr dans le forum Administration
    Réponses: 6
    Dernier message: 09/04/2008, 17h10
  4. Réponses: 2
    Dernier message: 06/02/2008, 11h30
  5. Count pour deux tables
    Par Safaritn dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/11/2005, 16h22

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