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 :

Est-ce possible de verifier si un utilisateur existe dans la bdd avec annotations ?


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut Est-ce possible de verifier si un utilisateur existe dans la bdd avec annotations ?
    Bonjour,

    J'aimerais savoir si il est possible de verifier l'existance d'un utilisateur dans la base de donnees avec des annotations ou quelque chose de propre.

    Car pour le moment j'ai une action qui recupere le login de l'utilisateur (username + password) et qui execute une requete de type select en comparant les logins fournit avec ceux de la base. Je stocke le resultat dans une liste et si la liste est vide alors ca veut dire que l'utilisateur n'existe pas.

    Mais je trouve que ca ressemble beaucoup a des validations donc voila je me demandais si il y avait pas moyen de faire plus simple.

    Merci a vous
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, excuse-moi mais je n'ai pas tout compris

    Mais si tu veux vérifier qu'un utilisateur existe bien, tu es obligé de faire un SELECT en base
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Ben en fait pour le moment je verifie si un utilisateur existe de cette maniere :

    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
     
    public boolean isMember(String username, String password, String result) throws BusinessException {
            Boolean test = false;
     
            try {
                EntityManager em = EntityUtil.getEntityManager("SUMSPU");
                if (!em.getTransaction().isActive()) {
                    em.getTransaction().begin();
                }
     
                Query quser = em.createQuery("select usr.username from Person usr where usr.username = '" + username + "'");
                Query qpass = em.createQuery("select usr.password from Person usr where usr.password = '" + password + "'");
                if (quser.getResultList().isEmpty()) {
                    result = "The user does not exist.";
                    test = false;
                } else if (!quser.getResultList().isEmpty() && qpass.getResultList().isEmpty()){
                    result = "You have specified a wrong password.";
                    test = false;
                } else {
                    result = "Congratulation, you have successfully logged in your account !";
                    test = true;
                }
     
            } catch (Exception e) {
                throw new BusinessException("Failure while trying to check is the user is already registered :" + e, e);
            }
            return test;
        }
    Mais j'ai entendu parler des validations avec les annotations hibernate alors je me suis demandé si ca avait la puissance d'aller carément vérifier dans la base ?
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  4. #4
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Re, les validations avec les annotations permettent de vérifier les contraintes : un champs ne doit pas être null, la longueur max...

    Pour vérifier qu'un utilisateur existe, tu es obligé de faire une requête

    Sinon, petit commentaire concernant ton code :
    - tu fais 2 requêtes alors qu'une seule est suffisante
    - il est préférable d'utiliser les paramètres dans tes requêtes plutôt que de concaténer la chaîne de caractères
    - le fait de dire que le login est correct mais pas le mot de passe peut être génant : un hacker pourra tester aléatoirement des logins et en trouver un existant ; il ne lui restera plus qu'à trouver le mot de passe

    Perso, je ferais plutôt quelque chose de ce type :
    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
    public boolean isMember(String username, String password) throws BusinessException {
    	try {
    		// Récupération de l'entitymanager
    		EntityManager em = ...;
     
    		Query query = em.createQuery("select p from Person p where p.username = :username and p.password = :password");
    		query.setString("username", username);
    		query.setString("password", password);
     
    		List<Person> list = query.list();
     
    		if (list.size() != 1) return false;
    	} catch (Exception e) {
    		throw new BusinessException("Failure while trying to check is the user is already registered :" + e, e);
    	}
    	return true;
    }
    (non testé)

    Bon développement
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Ahh je ne connaissais pas les parametres dans la requete, ca a l'air vachement pratique

    Je te remercie beaucoup pour tes conseils dans le code , vaut mieux que je prenne les bonnes habitudes tout de suite

    Je vais faire comme tu me le conseilles !

    merci +++
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Est-ce possible que ce soit setParameter au lieu du setString ? (ce dernier n'est pas reconnu).

    EDIT : oui apparement c'est setParameter
    "La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !" -Albert Einstein

  7. #7
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Autant pour moi

    Bonne continuation
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/03/2011, 09h08
  2. [ODBC] Verifier si une donnée existe dans la BDD
    Par thebarbarius dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 27/10/2010, 20h32
  3. Réponses: 5
    Dernier message: 09/11/2008, 17h52
  4. [VBA-E] est-ce possible de faire intervenir des données excel dans un html?
    Par guismoman33 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/03/2007, 12h22
  5. Réponses: 9
    Dernier message: 20/12/2005, 10h19

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