Interroger base de données avec hibernate
Fermé
ala
-
16 févr. 2013 à 20:13
ala3d Messages postés 2 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 19 février 2013 - 19 févr. 2013 à 21:10
ala3d Messages postés 2 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 19 février 2013 - 19 févr. 2013 à 21:10
A voir également:
- Interroger base de données avec hibernate
- Formules excel de base - Guide
- Gigaset ne reconnait plus sa base - Forum telephonie fixe
- Tnt base de données vide - Forum TNT / Satellite / Réception
- Désolé l'utilisation de la base de données a expiré epic games - Forum Jeux vidéo
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
2 réponses
Utilisateur anonyme
19 févr. 2013 à 18:52
19 févr. 2013 à 18:52
Salut!
Voici un cas d'utilisation TRES basique.
Tu dois implémenter une entité qui va mapper la table qui contient tes utilisateurs:
Et créer une classe qui te permet de récupérer un utilisateur sur base de son nom (via une requête JPQL). Une fois que tu as récupéré l'utilisateur, tu n'as plus qu'à contrôler son mot de passe.
Je te conseille néanmoins d'utiliser le cryptage pour ton mot de passe et de ne pas le stocker en clair dans ta base de données. De nombreux frameworks (dont Spring) contiennent tout ce qu'il faut pour cela, mais cela sort un peu du cadre de ta question. Pour plus d'information sur Hibernate, JPA, JPQL (et Spring): Google!
;-)
Voici un cas d'utilisation TRES basique.
Tu dois implémenter une entité qui va mapper la table qui contient tes utilisateurs:
package hacktrack.login; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; @Entity(name = "User") @Table(name = "T_USERS") public class User { @Column(name = "USER_NAME") private String username; @Column(name = "PASSWORD") private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
Et créer une classe qui te permet de récupérer un utilisateur sur base de son nom (via une requête JPQL). Une fois que tu as récupéré l'utilisateur, tu n'as plus qu'à contrôler son mot de passe.
package hacktrack.login; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Query; public class Login { @Autowired//Annotation de Spring permettant d'injecter dynamiquement le EntityManagerFactory (à configurer dans le contexte de Spring) EntityManagerFactory emf; public void login(String username, String password) throws Exception{ EntityManager em = emf.createEntityManager(); Query q = em.createQuery("FROM User u WHERE u.username='"+username+"'");//Requête JPQL permettant de récupérer le user portant ce nom User user = (User)q.getSingleResult(); if(!checkPassword(user, password)) throw new Exception("Login failed"); //Effectue ici toutes les actions nécessaires lorssque le login a réussi //... } private boolean checkPassword(User user, String password){ return user.getPassword().equals(password); } }
Je te conseille néanmoins d'utiliser le cryptage pour ton mot de passe et de ne pas le stocker en clair dans ta base de données. De nombreux frameworks (dont Spring) contiennent tout ce qu'il faut pour cela, mais cela sort un peu du cadre de ta question. Pour plus d'information sur Hibernate, JPA, JPQL (et Spring): Google!
;-)
ala3d
Messages postés
2
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
19 février 2013
19 févr. 2013 à 21:10
19 févr. 2013 à 21:10
salut
**********************
j'ai crée un javaBean
***********************
package com.login.beans;
public class Utilisateur {
private String userName;
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
*********************
j'ai crée un fichier .hbm.xml de mapping
*****************************
<?xml version="1.0" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.login.beans">
<class name="Utilisateur" table="client">
<id name="userName" type="int" column="id">
<generator class="native"/>
</id>
<property name="passWord" type="string" not-null="true" column="pass" />
</class>
</hibernate-mapping>
*********************
voici la classe qui contient la methode main
**************************
*/
public static void main(String[] args) {
System.out.println("nom = ");
Configuration config = new Configuration();
config.addClass(Utilisateur.class);
config.configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Utilisateur u1 = new Utilisateur();
session.close();
sessionFactory.close();
}
}
*******************
mais la requete hql me donne toujours une liste vide
de meme pour load()!!!!!!!!!!!!!
**********************
j'ai crée un javaBean
***********************
package com.login.beans;
public class Utilisateur {
private String userName;
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
*********************
j'ai crée un fichier .hbm.xml de mapping
*****************************
<?xml version="1.0" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.login.beans">
<class name="Utilisateur" table="client">
<id name="userName" type="int" column="id">
<generator class="native"/>
</id>
<property name="passWord" type="string" not-null="true" column="pass" />
</class>
</hibernate-mapping>
*********************
voici la classe qui contient la methode main
**************************
*/
public static void main(String[] args) {
System.out.println("nom = ");
Configuration config = new Configuration();
config.addClass(Utilisateur.class);
config.configure();
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.openSession();
Utilisateur u1 = new Utilisateur();
session.close();
sessionFactory.close();
}
}
*******************
mais la requete hql me donne toujours une liste vide
de meme pour load()!!!!!!!!!!!!!
ala3d
Messages postés
2
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
19 février 2013
Modifié par ala3d le 19/02/2013 à 21:10
Modifié par ala3d le 19/02/2013 à 21:10
ici j'ai supprimé la requête