Ce sous projet constitue un plugin maven (1.x) permettant de générer du code à partir de la structure d'une base de données. Cette fonctionnalité est déjà couverte par de nombreux outils (MidleGen, Sql2Java...), cependant ce générateur apporte la plus-value suivante:
La production du fichier modle est dcrite ici.
Le plugin produit un fichier XML qui détaille les tables, et colonnes du modèle, ainsi que les contraintes et relations qui les relient. Le format est assez explicite pour permettre une édition manuelle si besoin.
Extrait d'un fichier modèle:
<?xml version="1.0" encoding="ISO-8859-1"?> <model name="GTA-G1R0C0 (1)" date="2005-10-03T22:00:00Z"> <domain-of-values name="D_BOOLEEN"> <value name="OUI" value="O">Oui/True</value> <value name="NON" value="N">Non/False</value> </domain-of-values> <table name="BASCULE_CAA_SITE" alias="BCS"> <column name="BASCULE_CAA_SITE.ID_SITE" type="VARCHAR2" jdbc="VARCHAR" pk="true" mandatory="true" size="10"> <description>Identifiant du site</description> </column> <column name="BASCULE_CAA_SITE.ID_BASCULE" type="NUMBER" jdbc="NUMERIC" pk="true" mandatory="true" size="4"> <description>Identifiant de l'opération de bascule de préfixe du CAA</description> </column> <relation name="BCS_SIT_FK"> <target ref="SITE"/> <target-role>.</target-role> <source-role>.</source-role> <foreign-key name="BCS_SIT_FK"> <source ref="BASCULE_CAA_SITE.ID_SITE"/> <target ref="SITE.ID_SITE"/> </foreign-key> </relation> </table> </model>
Le plugin propose par défaut les templates de génération suivants :
Modèle d'objets métiers équivalent à la structure des tables en base. Les relations inverses et les tables associatives sont remplacées par des relations multiples (Collections).
Ce modèle n'est pas complet et doit être associ éaux templates model-orm ou model-basic selon le type de persistance utlisé. La hiérarchie des objets métiers peut être partiellement retravaillée pour obtenir un modèle orrienté objet.
Complément au modèle des objets métier. Il introduit le parcours des relations entre objets par invocation de DAO.
Il est destiné à être utilisé avec un mécanisme de persistance basique, de type JDBC ou SQLMaps, qui ne gère pas l'état de persistance des objets métier. Chaque objet métier doit alors gérer sa sauvegarde en base après une modification.
Complment au modle des objets mtier, destin tre associ un outil de persistance (Object Relational Mapping) de type Hibernate ou JDO. L'outil de mapping prend en charge le parcours des relation et le cycle de persistance des donnes.
Couche intermédiaire entre les objets métier et les DAO utilisant des proxies spring-aop pour intercepter les nouveaux objets métier instanciés et leur injecter les dépendances nécessaires.
Cette couche peut tre remplacée par l'utilisation de ccc-spring-aspects , voir de Spring 2.0 si un JDK 5 est utilisé.