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

Développement Web en Java Discussion :

hibernate et requete préparée


Sujet :

Développement Web en Java

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut hibernate et requete préparée
    Bonjour,

    Je fait une appli web java et j'ai un formulaire de connexion. Je voulais savoir si on pouvais faire des requêtes préparées comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    			String requete = "select * from util where email=? and password=?";			
    			statement = connex.prepareStatement(requete);
    			//Passage des paramètres dans la requete
    			statement.setString(1, email);
    			statement.setString(2, password);
    			//Exécution de la requête
    			ResultSet rs;
    			rs = statement.executeQuery();
    Merci de votre réponses

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    l'équivalente en hibernate:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    session.createQuery("from Util where email=:email and password=:pass");
    query.setParameter("email",email);
    query.setParameter("pass",password);
    List utils = query.list();

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    J'ai cette erreeur quand je clique sur le bouton connexion de mon formulaire:
    java.lang.ClassCastException: org.hibernate.internal.SessionImpl cannot be cast to org.hibernate.Query
    fr.appli.servlet.LoginServlet.doPost(LoginServlet.java:64)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)


    Voilà ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    			session.createQuery("from User where email=:email and password=:pass");
    			((Query) session).setParameter("email",email);
    			((Query) session).setParameter("pass",password);
    			List utils = ((Query) session).list();
    sa bloque sur la seconde ligne

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Il te faut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Query query = session.createQuery("from User where email=:email and password=:pass");
    			query.setParameter("email",email);
    			query.setParameter("pass",password);
    			List utils = query.list();

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Sa me met cette erreur:
    java.lang.ClassCastException: org.hibernate.internal.SessionImpl cannot be cast to org.hibernate.Query
    fr.appli.servlet.LoginServlet.doPost(LoginServlet.java:66)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

    Pour la dernière ligne que tu ma donné

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    es-tu réellement sûr d’utiliser Hibernate dans ton code ? Peux -tu nous afficher la classe contenant le code de ton premier post ?

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    Oui
    J'ai un formulaire de connexion et que je souhaite tester avec la base de donnés pouvoir savoir si les informations saisies sont correct ou non
    loginServlet
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    package fr.appli.servlet;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.hibernate.Hibernate;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
     
    import java.util.Iterator;
    import java.util.List;
     
    import fr.appli.model.User;
     
    public class LoginServlet extends HttpServlet {
     
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		System.out.println("LoginServlet - doGet");
     
    		//permet de renvoyer la requete à la JSP
    		req.getRequestDispatcher("/WEB-INF/login.jsp").forward(req, resp);
    	}
     
    	@Override
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		System.out.println("LoginServlet - doPost");
     
    		//On récupère valeurs saisies
    		String email = req.getParameter("email");
    		String password = req.getParameter("password");
     
    		System.out.println("Email : "+ email +" Mot de passe : "+ password);
     
    		//informations de configuration
    		Configuration configuration = new Configuration();
    		configuration.configure();
     
    		ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    		SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
     
    		//connexion à la base
    		Session session = sessionFactory.openSession();
     
    		//ouverture d'une transaction
    		Transaction tx = null;
    		tx = session.beginTransaction();
     
     
     
    		try{			
    			Query query = session.createQuery("from User where email=:email and password=:pass");
    			query.setParameter("email",email);
    			query.setParameter("pass",password);
    			List utils = ((Query) session).list();
     
     
    			//Lecture de l'enregistrement retourné
    			if(utils==null)
    			{
    				System.out.println("Mauvaise authentification !");
    				resp.sendRedirect("login");	
    			}else{
    				System.out.println("Bonne authentification !");
    				req.getSession().setAttribute("user", new User(email, password));
    				resp.sendRedirect("accueil");
    			}
    		}
    		finally{
    			try{
    				sessionFactory.close();
    				tx.rollback();
    			}
    			catch(Exception e){
    				e.printStackTrace();
    			}
    		}
    	}
    }
    Model User:
    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
    package fr.appli.model;
     
    public class User {
     
    	private String email;
    	private String password;
     
    	public User(String email, String password){
    		this.email = email;
    		this.password = password;
    	}
     
    	public String getEmail(){
    		return email;
    	}
     
    	public String getPassword(){
    		return password;
    	}
     
    	public void setEmail(String email){
    		this.email = email;
    	}
     
    	public void setPassword(String password){
    		this.password = password;
    	}
     
     
    }
    User.hbm.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping
    PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
    	<class name="fr.appli.model.User" table="util">
    		<id name="email" type="string" column="email">
    			<generator class="native"/>
    		</id>
    		<property name="password" type="string" not-null="true"/>
    	</class>
    </hibernate-mapping>

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    			List utils = ((Query) session).list();
    Ce n'est pas le code que Jeffray t'as donné, d'ailleurs personne ne t'as jamais donné un tel code

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    J'ai remis la ligne correctement mais sa ne va pas: que je saisisse les bons identifiants ou bien les mauvais, sa connecte quand même

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Points : 132
    Points
    132
    Par défaut
    J'ai enfin trouvé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    			Query query = session.createQuery("from User where email=:email and password=:pass");
    			query.setParameter("email",email);
    			query.setParameter("pass",password);
    			User user = (User) query.uniqueResult();
    Merci a tous de votre aide

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

Discussions similaires

  1. Hibernate avec requete Criteria
    Par Shogun dans le forum Hibernate
    Réponses: 0
    Dernier message: 14/11/2007, 12h14
  2. [Hibernate] problème requete HQL !
    Par fadjerx dans le forum Hibernate
    Réponses: 6
    Dernier message: 11/08/2007, 12h45
  3. [Hibernate] Pb Requete
    Par parasol007 dans le forum Hibernate
    Réponses: 3
    Dernier message: 01/06/2006, 00h42
  4. [hibernate][spring]requete select from where IN
    Par whilecoyote dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/04/2006, 09h06
  5. Réponses: 4
    Dernier message: 13/03/2006, 17h46

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