User Tools

Site Tools


wiki:epims4_0m2:developer:epcorearchitecture

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:epims4_0m2:developer:epcorearchitecture [2008/07/23 11:43]
dupierris
wiki:epims4_0m2:developer:epcorearchitecture [2008/10/02 10:21] (current)
Line 23: Line 23:
  
 **REMARQUE** : ServiceLocator recherche dans l’ApplicationContext qui lui est spécifié les beans correspondants à l’implémentation de IXXXService (définit dans spring-*.xml). **REMARQUE** : ServiceLocator recherche dans l’ApplicationContext qui lui est spécifié les beans correspondants à l’implémentation de IXXXService (définit dans spring-*.xml).
 +
  
  
Line 59: Line 60:
 == Remarque == == Remarque ==
  
-FIXME Cette partie ​est en cours de mise en place et est donc susceptible d'​évoluer en permanence ! +L'​architecture du projet eP-Core suite à l'​utilisation de Hibernate Tools n'est pas celle de la version distribuée (eP-Core 3.4.6) dans ePims 4.0M2 
 +mais elle est intégrée à partir de la version 3.5.0  (seule cette intégration différencie les versions)
  
 Actuellement pour la génération automatique nous utilisons Hibernate Tools comme plugin Eclipse.  ​ Actuellement pour la génération automatique nous utilisons Hibernate Tools comme plugin Eclipse.  ​
-Les règles / spécificités que l'​on ​souhaite ​conserver : +Les règles / spécificités que l'​on ​a souhaité ​conserver : 
-  *Absolument+  * Absolument
     * séparation des POJOs et DAOs dans des packages différents : **OK Avec Hibernate Tools !**      * séparation des POJOs et DAOs dans des packages différents : **OK Avec Hibernate Tools !** 
     * séparation interface / implémentation pour les DAOs    : **OK Avec Hibernate Tools !**      * séparation interface / implémentation pour les DAOs    : **OK Avec Hibernate Tools !** 
-  * Éventuellement + 
-    ​* ​deux niveaux de hiérarchie pour les POJOs : **Semble problématique ! A Voir !! **+La séparation en deux niveaux de hiérarchie pour les POJOs n'est pas possible (a moindre coût ... après une rapide évaluation).
  
 De plus les modifications entrainées par le changement de //​générateur//​ doivent impacter au minimum les modules utilisant eP-Core. De plus les modifications entrainées par le changement de //​générateur//​ doivent impacter au minimum les modules utilisant eP-Core.
Line 141: Line 143:
 == Génération == == Génération ==
 **__Attention:​__** \\ **__Attention:​__** \\
-La génération est en cour de mise au point !! Hibernate Tools ne permettant ​pas de générer pour chaque classe du domaine, une classe abstraite. ​Deux solutions ​+La génération est en cour de mise au point !!  
-  * Revoir la hiérarchie des classes du domaines pour adopter celle générée par Hibernate Tools : Le problème réside dans la conservation des modifications manuelles : Voir avec les possibilités du tag <​meta>​ class-code... **(cf ci-dessous)** + 
-  ​* Créer ​un ReverseEngineeringStrategy propriétaire pour générer ​ces 2 niveaux. ​**(Abandonné pour le moment)**+Hibernate Tools ne permet ​pas de générer pour chaque classe du domaine, une classe abstraite. ​Pour le moment, il a été choisi de 
 +  * Revoir la hiérarchie des classes du domaines pour adopter celle générée par Hibernate Tools. ​Pour le code propriétaire (non généré) il est possible de le faire apparaitre au niveau des hbm.xml **(cf ci-dessous)** 
 +\\  
 +Dans  le cas où cette solution n'est plus satisfaisante,​ une autre solution serait de créer ​un ReverseEngineeringStrategy propriétaire pour générer ​les 2 niveaux ​qui existaient
  
 __1. Le "​Custom code"​__ __1. Le "​Custom code"​__
  
-Le //Custom code// ​actuellement ​définis ​et son éventuelle intégartion ​dans HibernateTools:​ \\+Intégration du //Custom code// définis dans les versions précédentes avec HibernateTools:​ \\
  
 ^ Custom Code  ^ Intégration dans HibernateTools ​ ^ ^ Custom Code  ^ Intégration dans HibernateTools ​ ^
Line 165: Line 170:
  
 __2. Initialisation de l'ID__ \\ __2. Initialisation de l'ID__ \\
-Ajout de l'​appel suivant dans les constructeurs pour initialisation de l'ID à la valeur spécifiée comme unsaved-value dans le hbm.xml+Jusque là, l'​appel suivant ​était ajouté ​dans les constructeurs pour initialisation de l'ID à la valeur spécifiée comme unsaved-value dans le hbm.xml
 <​code>​ <​code>​
 super.setId(-1); ​    //Set id to -1 => unsaved-value super.setId(-1); ​    //Set id to -1 => unsaved-value
Line 200: Line 205:
   * VirtualWell   * VirtualWell
  
-Modifie ​la définition de l'id dans les hbm.xml de +A partir de la version 3.5.0 d'​eP-Core, ​la définition de l'id dans les hbm.xml ​a été changé ​de 
 <​code>​ <​code>​
 <id ... type="​int"​ unsaved-value="​-1"​ <id ... type="​int"​ unsaved-value="​-1"​
Line 208: Line 213:
 <id ... type="​Integer"​ unsaved-value="​null"​ <id ... type="​Integer"​ unsaved-value="​null"​
 </​code>​ </​code>​
 +
 +Par conséquent,​ il n'y a pas de code spécifique à ajouter dans les constructeurs.
  
 __3. Gestion des composite-id__ \\ __3. Gestion des composite-id__ \\
Line 214: Line 221:
 => Hibernate Tools ne défini pas de classes spécifique pour les composite ID... seulement tous les paramètres appartenant à la clé diovent être spécifiés ! => Hibernate Tools ne défini pas de classes spécifique pour les composite ID... seulement tous les paramètres appartenant à la clé diovent être spécifiés !
  
-== Ancienne ​Génération ​== +__4. Génération ​avec Hibernate Tools__ ​ 
-Pour chaque classe du domaine, une classe abstraite est créée. + 
-Seules les classes mères abstraites ​AbstractXXX” sont systématiquement générées:!: A verifier avec Eclipse ​: Les sous classes ne sont générées que la première fois ce qui permet de les personnaliser sans tout perdre ​à chaque génération+Les POJOs sont générés dans le répertoire source ​src/main” et le package cea.edyp.epims.domain 
 +Pour cela, depuis ​Eclipse, ouvrir ​la perspective Hibernate et accéder ​à la boite de dialogue ''​Hibernate Code Generation'',​ (en passant par le menu Run > Hibernate Code Generation > Open Hibernate Code Generation Dialog). 
 + 
 +Créer un ''​Hibernate Code Generation''​ (<​HCG>​) ou ''​launch configuration''​ en spécifiant  
 +  * Dans l'​onglet **Main** 
 +    * un nom,  
 +    * **Console configuration** : le nom de la configuration hibernate créé (voir [[#​preparation|ci-dessus]]),​ <​ePCore_config>​. 
 +    * **Output directory** : \eP-Core\src\main 
 +  * Dans l'​onglet **Exporters** 
 +    * Sélectionner l'​option "Use Java 5 Syntax"​ (afin d'​utiliser les ''​Generic''​) 
 +    * Sélectionner ''​Domain Code (Java)''​ et le configurer avec la propriété ''​Template directory''​ = ''​\eP-Core\resources\hibernate\templates'' ​
  
-{{ epc_pojo_diagram.png?800 }} +Exécuter la génération en sélectionnant Run ...
-** Figure: Diagramme de classes exemple pour les objets du domaine ** +
  
  
wiki/epims4_0m2/developer/epcorearchitecture.1216806236.txt.gz · Last modified: 2008/09/24 15:35 (external edit)