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

JSF Java Discussion :

conception jsf avec dao


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut conception jsf avec dao
    Bonjour,

    je voudrais savoir comment lier la conception DAO avec jsf( je passe par des dao personnalisés , et non hibernate ou autre orm)
    J'ai créer un formulaire en JSF afin de créer/modifier/supprimer un utilisateur dans une BD.
    J ' ai donc un bean utilisateur et parallèlement a ce bean , j ' ai une classe UtilisateurDao qui dispose des fonctions de gestion d ' user
    Mais comment faire pour utiliser ces méthodes dans mon formulaire , sans passer par le bean ,mais bien par le dao ?
    Merci de votre aide

  2. #2
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Un peu de code peut-être??

    Car en l'état je vois pas quoi te dire de plus que ca:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class MonManagedBean {
     
    	private MonBean monBean;
    	private MonDao<MonBean> monDao;
     
    	public void faitQqch() {
    		monDao.faitCa(monBean);
    	}
     
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut
    Salut,

    grand merci pour ton aide

    voici mon bean:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    /**
     * 
     */
    package com.dev.beans;
     
    /**
     * @author Bibou
     *
     */
    public class Utilisateur {
    	private int id;
    	private String nom;
    	private String prenom;
    	private int age;
    	private String adresse;
    	private String mail;
     
    	public Utilisateur(int id, String nom, String prenom, int age, String adresse,
    			String mail) {
    		super();
    		this.id=id;
    		this.nom = nom;
    		this.prenom = prenom;
    		this.age = age;
    		this.adresse = adresse;
    		this.mail = mail;
    	}
    	public String toString()
    	{
    		return id +" " + nom + " " + prenom + " " + age + " " + adresse + " " + mail;
    	}
    	public Utilisateur() {
    	}
     
    	public int getId() {
    		return id;
    	}
     
    	public void setId(int id) {
    		this.id = id;
    	}
     
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public String getPrenom() {
    		return prenom;
    	}
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	public String getAdresse() {
    		return adresse;
    	}
    	public void setAdresse(String adresse) {
    		this.adresse = adresse;
    	}
    	public String getMail() {
    		return mail;
    	}
    	public void setMail(String mail) {
    		this.mail = mail;
    	}
     
     
    }
    et le dao de mon utilisateur

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    public class UtilisateurDAO implements UtilisateurDAOInterface{
     
    	private DAO dao;
     
    	public UtilisateurDAO() {
    		super();
    		dao=new DAOInterface();
     
    	}
     
    	public void enregistrerUtilisateur(Utilisateur utilisateur) {
    		dao.connexion();
    		//System.out.println(INSERT+utilisateur.getId() +  "','"+ utilisateur.getNom() +  "','" +utilisateur.getPrenom()+"','"+utilisateur.getAge()+"','" +utilisateur.getAdresse()+"','" +utilisateur.getMail()+"')");
    		dao.insert(INSERT+utilisateur.getId() +  "','"+ utilisateur.getNom() +  "','" +utilisateur.getPrenom()+"','"+utilisateur.getAge()+"','" +utilisateur.getAdresse()+"','" +utilisateur.getMail()+"')");
     
    		System.out.println("Sauvegarde reussie");;
    		dao.deconnexion();
     
    		}
     
    	public List<Utilisateur> rechercherTousUtilisateur() {
     
    		List<Utilisateur>utilisateurs=new ArrayList<Utilisateur>();
    		try
    		{
    			dao.connexion();
    			ResultSet resultat=dao.select(SELECTALL);
    			while(resultat.next())
    			{
    				utilisateurs.add(new Utilisateur(resultat.getInt(1),resultat.getString(2),resultat.getString(3),resultat.getInt(4), resultat.getString(4), resultat.getString(5)));
    			}
    		}
    				catch(SQLException e)
    				{
    					e.printStackTrace();
    				}
    				dao.deconnexion();
    				return utilisateurs;
    		}
     
     
    	public Utilisateur rechercherUnUtilisateur(String nom) {
     
    		Utilisateur utilisateurs=null;
     
    		try
    		{
    			dao.connexion();
    			ResultSet resultat=dao.select(SELECTONE+nom+"'");
     
     
     
    		if(!resultat.first())
    		{
    			return null;
    		}
    		utilisateurs=new Utilisateur(resultat.getInt(1),resultat.getString(2),resultat.getString(3),resultat.getInt(4), resultat.getString(4), resultat.getString(5));
    		dao.deconnexion();
    		return utilisateurs;
     
    	}catch(SQLException e)
    	{
    		e.printStackTrace();
    		dao.deconnexion();
    		return null;
    	} 
    	}
     
    }
    selon ton exemple , je dois donc passer un bean lors de mes methodes pour qu ' il sache sur qui agir ?

    merci encore

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas trop l'intérêt de "MonBean" dans l'exemple donné (à moins bien sûr que ton managed Bean fasse référence à un objet Utilisateur et que ce ne soit pas Utilisateur que soit le managedBean... bref...).

    Ce qu'il faut retenir, c'est qu'il te suffit de "wrapper" les méthodes qui t'intéressent vers ton DAO.
    Ainsi, ton managedBean aura une méthode ajoutUtilisateur() qui exploitera la méthode appropriée de ton DAO.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    A priori ton formulaire manipulera ton bean. Et toutes les actions seront délégués à ton DAO (ou à une couche de service intermédiaire)

    Ta jsp sera truffé de choses dans ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="#{monManagedBean.monBean.monAttribut}"

    Et tes boutons d'actions renverront vers des méthodes de ton dao:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    action="monManagedBean.faitQqch"

  6. #6
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    EDIT: suite à la réponse de O'butterlin

    Il aura nécessairement besoin d'un conteneur pour les différentes infos.
    Ce pourrait-être le managed bean lui-même mais dans ce cas on se trainera des méthodes DAO avec moult arguments et des gettres/setters a foison dans le ManagedBean.
    Ou alors on rompt le contrat de bonne pratique en passant le ManagedBean lui même en argument du DAO. Horreur!

    Après peut-être penses-tu à autre chose qui m'a échappé.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    D'un point de vue "bonnes pratiques", je suis tout à fait d'accord avec toi pour l'usage d'un bean à part pour les données liées à la DAO.
    Mais dans l'absolut, on peut faire les choses autrement, au niveau de la méthode d'interfaçage avec la DAO. Ça permet de changer de type de manière plus contrôlée.
    Exemple :
    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
     
    class MonManagedBean
    {
       private String champ1;
       private String champ2;
    ...
       public void addUnTruc()
       {
          MonEntite monEntite = new MonEntite();
          MaDAO maDAO = new MaDAO(...);
     
          SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
          monEntite.setExempleDate(sdf.parse(champ2));
          ...
          maDAO.write(monEntite);
       }
    }
    C'est un exemple, pas forcément le meilleurs...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 179
    Points : 100
    Points
    100
    Par défaut
    Désolé du retard de la réponse, je devais implémenter d ' autres fonctionnalités parallèlement a ma couche DAO.

    Ça fonctionne bien désormais en mettant les fonctions DAO dans le bean , bien que j ' ai préféré passé par un contrôleur pour éviter de surcharger le bean et laisser une bonne visibilité a mon appli.


    Merci a vous 2

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

Discussions similaires

  1. Conception jsf avec DAO
    Par ChristopheD dans le forum JSF
    Réponses: 1
    Dernier message: 08/03/2010, 10h09
  2. Réponses: 9
    Dernier message: 22/07/2005, 16h10
  3. [Conception] Queue avec priorité
    Par Mobius dans le forum Général Java
    Réponses: 4
    Dernier message: 11/04/2005, 08h26
  4. [MFC]Ouverture d'une base de donnee avec DAO
    Par Wyatt dans le forum MFC
    Réponses: 7
    Dernier message: 24/01/2005, 10h06
  5. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45

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