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

Persistance des données Java Discussion :

DAO association 1 n


Sujet :

Persistance des données Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2018
    Messages : 20
    Points : 23
    Points
    23
    Par défaut DAO association 1 n
    Bonsoir,
    J'ai 2 soucis :
    1 - Quand je fais une select inner join, je ne n'obtiens rien.
    2 - Où je dois appeler la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AjouterFils(FilsData fils)
    afin d'associer une liste de fils à un parent
    Je vous remercie d'avance.

    Voici le code
    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
    import java.util.ArrayList;
    import java.util.List;
     
    public class ParentData {
    	private int id_parent;
    	private String nom_parent;
    	private List<FilsData> fils = new ArrayList<FilsData>();
    	public int getId_parent() {
    		return id_parent;
    	}
    	public void setId_parent(int id_parent) {
    		this.id_parent = id_parent;
    	}
    	public String getNom_parent() {
    		return nom_parent;
    	}
    	public void setNom_parent(String nom_parent) {
    		this.nom_parent = nom_parent;
    	}
    	public List<FilsData> getFils() {
    		return fils;
    	}
    	public void setFils(List<FilsData> fils) {
    		this.fils = fils;
    	}
     
    	public void AjouterFils(FilsData fils) {
    		this.fils.add(fils);
    	}
     
    }
    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
     
    public class FilsData {
     
    	private int id_parent;
    	private int id_fils;
    	private String nom_fils;
    	private ParentData parentData = new ParentData();
    	public int getId_parent() {
    		return id_parent;
    	}
    	public void setId_parent(int id_parent) {
    		this.id_parent = id_parent;
    	}
    	public int getId_fils() {
    		return id_fils;
    	}
    	public void setId_fils(int id_fils) {
    		this.id_fils = id_fils;
    	}
    	public String getNom_fils() {
    		return nom_fils;
    	}
    	public void setNom_fils(String nom_fils) {
    		this.nom_fils = nom_fils;
    	}
    	public ParentData getParentData() {
    		return parentData;
    	}
    	public void setParentData(ParentData parentData) {
    		this.parentData = parentData;
    	}
     
    }
    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
     
     
    public class ParentImplDAO   implements InterfaceDAO<ParentData, Integer>{
     
    	@Override
    	public ParentData creer(ParentData t) {
    		// TODO Auto-generated method stub
    		return null;
    	}
     
    	@Override
    	public ParentData trouver(Integer id) {
    		// TODO Auto-generated method stub
    		return null;
    	}
     
    	@Override
    	public List<ParentData> liste() {
    		// TODO Auto-generated method stub
    		return null;
    	}
     
    	@Override
    	public ParentData modifier(ParentData t) {
    		// TODO Auto-generated method stub
    		return null;
    	}
     
    			return null;
    	}
     
     
    }

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 461
    Points : 894
    Points
    894
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Pour commencer, il serait bon ton de respecter les conventions Java.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import java.util.ArrayList;
    import java.util.List;
     
    public class ParentData {
        private int id_parent;
        private String nom_parent;
        private List<FilsData> fils = new ArrayList<FilsData>();
    Ça ne respecte pas les conventions Java. On est sensé écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import java.util.ArrayList;
    import java.util.List;
     
    public class ParentData {
        private int idParent;
        private String nomParent;
        private List<FilsData> fils = new ArrayList<FilsData>();
    Bon, ensuite, il suffit d'utiliser JDBC. Attention a préférer les PreparedStatement aux Statement tout court.
    C'est dans la FAQ:
    https://java.developpez.com/faq/jdbc...paredStatement

    Attention à utiliser des paramètres plutôt.
    Au lieu de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String sql = "UPDATE Stocks SET prix = ?, quantite = ? WHERE nom = ?"; 
    //préparation de la requête 
    PreparedStatement preparedStatement = connection.prepareStatement(sql); 
    //on assigne un décimal au premier paramètre 
    preparedStatement.setBigDecimal(1,15.6); 
    //on assigne un entier au second paramètre 
    preparedStatement.setInt(2,256); 
    //on assigne une chaîne de caractères au troisième 
    preparedStatement.setString(3,"café"); 
    //exécution de la requête 
    preparedStatement.executeUpdate();
    Je recommande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String sql = "UPDATE Stocks SET prix = :prix, quantite = :quantite WHERE nom = :nom"; 
    //préparation de la requête 
    PreparedStatement preparedStatement = connection.prepareStatement(sql); 
    //on assigne un décimal au premier paramètre 
    preparedStatement.setBigDecimal("prix",15.6); 
    //on assigne un entier au second paramètre 
    preparedStatement.setInt("quantite",256); 
    //on assigne une chaîne de caractères au troisième 
    preparedStatement.setString("nom","café"); 
    //exécution de la requête 
    preparedStatement.executeUpdate();
    Ensuite, il y a une seconde difficulté, rester dans le principe d'une base de donnée, c'est à dire le principe ACID ( https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID ).

    Lors des modifications, il faut d'abord définir une transaction, puis une fois tout est fait, comiter.
    Il y a des indications ici:
    https://java.developpez.com/faq/jdbc...s-transactions

    En cas de problèmes (Une exception par exemple), il faut Rollbacker (Dans le catch).

    Le reste, c'est du SQL.

    Au sein d'une transaction, il faut d'abord insérer le parent, récupérer l'identifiant et ajouter les fils 1 à 1.

Discussions similaires

  1. [SHELL] Icônes associées à des fichiers
    Par agh dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 09/04/2003, 17h04
  2. [VB6] [Install] Associer une icone à un raccourci
    Par petitgognol dans le forum Installation, Déploiement et Sécurité
    Réponses: 7
    Dernier message: 30/10/2002, 20h20
  3. [Delphi] Association composants-projet
    Par Pierre Castelain dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/07/2002, 16h20
  4. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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