Hello,
C'est ce qu'il faut faire une conception d'une part (diagramme uses case ,de sequence,de classe)c'est bon? , apres il faut implementer les classes que j'ai defini dans mon diagramme de classe (moi je vais utiliser NetBeans)c'est bon?
Le diagramme des cas d'utilisation te permet de cerner les différents modules et fonctionnalités de ton application, de manière à mieux structurer la conception. C'est surtout intéressant pour bien cibler les besoins du client et pour lui faire valider le cahier des charges avant la phase de développement.
Le diagramme de classes, c'est important pour la conception, et ça te permet de mieux t'organiser et de prévoir les différents problèmes qui vont subvenir dans ta conception avant de les rencontrer, et donc de trouver des solutions architecturales avant le développements (enfin, tu auras tout de même des problèmes pendant le développement, mais moins si tu as déjà réfléchi à tout ça auparavant).
Je ne connais pas NetBeans (moi j'utilise Eclipse), mais pas de problème de ce côté là, c'est un IDE réputé.
D'autre part il me faut la base de donnée (donc je vais creer une :j'utilise sql2005server)
La j'ai une petite question (est ce que les tables:je vais les créer comme ca ou je dois encore avoir mon MCD et apres mon MLD , Moi je crois que le MLD est obligatoire)
Ici ça dépend, tu as plusieurs méthodes :
- soit tu fais ton MCD et tu en déduis ton MLD pour écrire tes scripts SQL à la main, et ensuite tu écris tes classes java pour mapper tes classes
- soit tu écris tes classes java (à partir de ton diagramme de classes) et tu génères les scripts SQL qui vont correspondre à ces classes (par exemple tu as le plugin Hibernate Tools qui fait ça avec Eclipse. Avec NetBeans, tu dois avoir le même genre d'outils j'imagine). Ca c'est plutôt l'approche haut-niveau, car tu ne te soucies pas trop de comment c'est implémenté en base, mais ça fonctionne comme tu le souhaites au niveau applicatif. En plus ça demande moins de boulot.
Perso, je préfère la première méthode, même si c'est plus long.
Je dois faire quoi apres ,pour arriver à mes interfaces?
J'ai posé la question à qqn ,il m'a dit qu'il faut le mapping ,alors a quoi va servir ce mapping :)?
(pour les explication j'ai pas bien compris :c'est quoi les beansjava?)
Grossièrement, un bean, c'est une instance d'une classe business qui ne contient pas de logique métier (ou alors seulement une logique qui lui est propre). Par exemple tu peux avoir une instance de classe vélo, qui va contenir des attributs selle, guidon, cadre, béquille, une liste de roues,... et des méthodes propres au vélo (gonflerPneus(), changerRoue() ...). C'est une instance d'une classe qui possède un constructeur par défaut (sans argument).
Dans le cadre d'un mapping, tes classes de mapping vont instancier des beans qui vont correspondre à tes tables :
Dans ta BD :
create table persons (id int(10) primary key, firstname varchar(32), lastname varchar(32));
Et la classe qui va mapper cette table sera de ce style :
public class Person {
private Integer id;
private String firstname;
private String lastname;
public Person() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setFirstname(String lastname) {
this.lastname = lastname;
}
}
Voilà :). Ensuite, il ne te reste plus qu'à indiquer à ton application que ta classe Person mappe ta table persons (ça se fait facilement avec des annotations ou un fichier xml de mapping). Tu accèderas à tes données grâce à des dao (Data Access Objects), qui vont en gros se charger de récupérer directement des objets issus de ta base de données.
A quoi sert le mapping ?
Bah globalement, au lieu d'écrire des classes de lecture de données qui vont toutes ressembler à un truc du genre :
- je crée une connexion à ma BD
- je crée un statement
- j'effectue une requête particulière à ma méthode ("select firstname, lastname from persons where id=" + id + ";" par exemple)
- je parcours mon resultSet pour stocker mon résultat dans une instance de classe écrite à la main
- je ferme mon statement
- je ferme ma connexion
- je retourne l'instance en question
(NB : en pratique on ne crée/ferme pas la transaction dans chaque méthode, car c'est coûteux pour la BD, on le fait en amont de manière à utiliser la même connexion pour plusieurs requêtes)
tu as une méthode comme ça :
- création d'une session
- création d'une transaction
- tu écris une requête qui te récupère une liste d'objets correspondants à ta requête ("from Person where id=" + id + ";" par exemple)
- tu commites ta transaction (pas la peine pour cet exemple vu qu'on ne fait qu'un select)
- tu fermes ta transaction
- tu retournes ta liste
L'avantage : ça mappe directement les objets dans tes beans, tu n'as pas de mapping à faire directement, tu ne te soucies plus de ta base de données, mais uniquement des tes objets java).
Enfin, si tu utilises des frameworks intégrant des outils pour utiliser hibernate plus rapidement/facilement (genre Spring), ça se résume à une ligne de la sorte :
return getHibernateTemplate.get(Person.class, id);
ou si tu as un critère moins sélectif :
return (List<Person>) getHibernateTemplate.find("from Person where lastname='" + toto + "';");
Bref, ça te fait gagner beaucoup beaucoup de temps, et ça te permet de t'éviter tout le mapping qui ne t'apporte absolument rien en compétence, et te permet de te focaliser sur des choses plus importantes.
Voilà, j'espère que ça t'a éclairé et t'a convaincu de l'utilité du mapping (faire un mapping à la main pour petite table de 3 attributs c'est pas dérangeant, quand tu as 30 tables de 20 attributs, c'est carrément plus embêtant).
Cordialement.