# Java > Gnral Java > Persistance des donnes >  Comment modliser, puis gnrer classes ET schma ?

## buteiduil

Bonjour, et bonne anne  tous !  :8-): 

Je cherche  dvelopper une application Java qui enregistre ses donnes dans une base Oracle.

Je souhaite pouvoir construire indpendamment mon modle de donnes dans un premier temps (entits, attributs, relations), et ensuite (re-)gnrer les classes Java ainsi que le schma DDL correspondant.

A ma connaissance, les technologies de persistance (Hibernate, JPA...) ne proposent pas ce comportement. Il faut soit avoir dj cr la base et la "reverser", soit avoir cr les classes et gnrer le schma DDL  partir de ces classes.

Connaissez-vous une solution approprie pour ce cas d'utilisation ? (compatible avec Eclipse si possible...)

Merci d'avance pour vos conseils !

----------


## bruno.getJava()

Bonjour...

Alors "compatible avec Eclipse"...j'en sais rien....mais tu as des solutions telles que PowerAmc...qui te permet de cree des MCD et MPD et generer les scripts pour la creation de la base....pis quand t'as ta base,
ben a ce moment l, tu te mets sous Clipse...et pis tu relis le tout et pis hibernate...ou JPA...ou autre et Hop reverse Engeneering...et tes classes sont faites....


Voil, le plus long c'est faire la base....correctement...ensuite a partir de Eclipse...en en 30 min voir 1 heure si t'as 15 tables.....ben t'es prets a coder....

Voilou....

Bon courage.

----------


## Big Bug

PowerAMC fait des merveilles pour crer un schma conceptuel (MCD) puis le traduire en schma physique (MPD) puis en script de base de donnes. Malheureusement, je ne pense pas que celui-ci te cre les classes JAVA annotes...

De plus, si mes souvenirs sont bons, il est trs cher...

AnalyseSI est un outil "gratuit" mais l encore, il gnre du code MySQL et non du JPA (ce qui est dommage, ma foi). Mais personnellement, si tu as du temps, je pense que la cration du code JPA sur AnalyseSI ne doit pas tre trs compliqu car si on peut partir du MCD (ce qui est le cas), gnrer du code JPA devrait tre  porte de doigts...

----------


## bruno.getJava()

Oui, ais hibernate ou JPA...bref, via Eclipse, tu peux gnrer tes classes directement ....une fois que ta base est cre....

Pourquoi chercher un truc qui va te faire ton "code JPA" ???
Comment tu l'intgre dans ton appli ???

Tu dois bien passe par Eclipse , non ???

Si je comprends bien , tu cherches un plug-in Eclipse permettant des creer MCD, et base de donnes, c'est ca ??

----------


## tchize_

le plus "logique" d'un point de vue design, a mon avis, c'est de faire le design de vos classes, comme vous le faites pour n'importe quelle classe, qu'elle soit classe de donnes ou pas, et laisser la couche de persistance au final faire son boulot de mapping automatique et de cration des tables. La base de donnes et sa structure n'est qu'un moyen, pas un but  :;):

----------


## buteiduil

D'abord merci pour vos rponses !

D'aprs vos messages, je constate qu'il existe deux "coles" :
- Cration de la BDD, puis reversing automatique pour crer les classes
- Cration des classes, puis gnration automatique de la BDD

Personnellement, ces 2 solutions me paraissent envisageables tant que je peux gnrer facilement l'un depuis l'autre.

Mon principal souci est que mon modle risque d'voluer frquemment dans le temps.

C'est la raison pour laquelle je cherche une solution qui me permettra d'assurer la cohrence entre mes classes Java et mes tables Oracle sans avoir  tout rcrire...

Voici comment je conois l'architecture d'une application :
- couche prsentation
- couche contrleur/traitements
- couche donnes

Cette dernire couche "donnes" doit se dcomposer en :
- classes Java (instances des donnes de la base)
- moteur de persistance qui fait le lien Java/Oracle
- tables Oracle

Cette vision vous parait-elle cohrente par rapport  ce que vous avez l'habitude d'implmenter ?

Par ailleurs, je suis un peu perdu avec tous les frameworks existants (JPA, Hibernate, EclipseLink)...
Lequel recommanderiez-vous ?

----------


## bruno.getJava()

Salut, 


C'est ptet pas la meilleure facon de faire ;..mais ca fonctionne pas trop mal.

Alors pour moi le point de dpart c'est : un crayon et un papier !!!

Et il est tout a fait normal que ton modle volue au fur et  mesure de ton appli....

Donc sur ta feuille :

- tu fais un premier modele qui te parait bien ...(que tu modifie au fur et a mesure)

- tu peux faire une esquisse de l'IHM, histoire de savoir a quoi ca va ressembler et te remettre un peu le fonctionnel dans la tte...
Ainsi , tu pourras aussi voir quelles donnes tu auras besoin, ce qui t'aideras dans la conception de la base....

Une fois que c'est fait, tu attaques ta base....et si elle est bien faites, tu auras aucun mal a coder simple et propre ta future appli...

Une fois ta base faites, tu attaque ton codage via un framework quelconque.

Voil en gros ma mthode.

Pour les frameworks, tout dpend de ton appli...

Si c'est du java pure, juste un framework pour la gestion de la base ...style JPA ou hibernate (hibernate implemente JPA...si je dis pas de betises)...

Si c'est du J2E...donc client serveur, ben un framework pour la base , un autre pour la gestion des actions...style Struts ...voir Struts2 qui se marient tres bien avec hibernate ou autre...

Et pour finir , tout dpend de la taille de ton appli....
Si il y a beaucoup de donne  traiter....si il y'a beaucoup d'action...bref...

ce qu'il faut juste retenir, c'est que tu dois choisir un framework, pas trop difficile  utiliser, et surtout BIEN DOCUMENTE....
surtout si tu dbute dans le framework.....

Voil...

Bon courage

Et  tout le monde n'hsiter pas  me corriger si j'ai dis des neries....

----------

