Ok, pas de souci.
Avant de passer à l'affichage, on va s'occuper de la partie Hibernate. Et s'assurer qu'on extrait bien les données qu'on veut.
Une fois que ce sera fait, on passera la liste à Struts, et enfin, on affichera ça dans la jsp.
Pour configurer Hibernate, tu as 3 choses :
- le fichier xml, pour configurer ta BD, tes classes mappées... j'imagine que ça c'est bon
- tes java beans, qui sont de simples classes avec un constructeur par défaut et des accesseurs/mutateurs, et les annotations qui vont bien... tu m'as dit que ça aussi ça marchait
-enfin, pour faire les choses bien, on utilise des dao (Data Access Object) qui sont des interfaces s'occupant de la partie requêtage SQL...
Ensuite, tes classes service vont utiliser les dao pour obtenir les informations souhaitées.
Pour le code, on va prendre un exemple simple : un bean Personne comportant 2 attributs (je mets pas les import, je ne les connais pas par coeur) :
@Entity
@Table (name = "personne")
class Personne {
private Integer id;
private String nom;
private String prenom;
public Personne(){}
@Id
@GeneratedValue (strategy = GenerationType.AUTO) //laisse ton sgbd générer automatiquement les id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
//idem pour prenom
}
class Service {
private PersonneDao personneDao = new PersonneDao();
public List<Personne> cherchePersonne(String nom, String prenom) {
return personneDao.chercherPersonne(nom, prenom);
}
}
class PersonneDao {
public List<Personne> cherchePersonne(String nom, String prenom) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Personne> personnes = session.createQuery("from Personne where nom=" + nom + " and prenom=" + prenom).list();
session.getTransaction().commit();
return personnes;
}
}
public class HibernateUtil {
public static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable e) {
throw new ExceptionInInitializerError(e);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Voilà en gros comment il faut faire, après tu as des optimisations à faire. Par exemple utiliser des preparedStatement, améliorer la gestion des transactions pour les faire depuis tes classes service (tu peux en avoir besoin pour faire des rollback lorsque tu as plusieurs actions qui s'enchaînent)...
Teste ça via une classe JUnit par exemple, ça va te prendre 5minutes à développer et au moins on sera fixé quand au fait de savoir si tu as bien une liste d'objets retournés par Hibernate.
Une fois que ce sera fait, reviens vers moi, et on verra comment on avance (mais pour le reste je pense que tu étais à peu près ok, si tu rajoute la ligne que je t'avais donnée).
Cordialement,
blogfrisbee point blogspot point com