Package org.nuiton.topia
ToPIA est un framework de persistence basé sur Hibernate. Il contient un point d'entré le TopiaContext qui permet d'ouvrir des transactions qui retourne des TopiaContext fils sur lequel on peut récupéré des DAO pour accèder aux entités.
ToPIA offre en plus la possibilité de générer à partir d'une fichier XMI toutes les classes utiles pour la persistence. Ce qui permet d'évité un travail fastidieux d'ecriture de classe, d'être sur que le jour on l'on veut ajouter une méthode technique (getXML, ...) à toutes ces entités cela sera fait de façon simple et automatique (modification du générateur puis regénération). Et surtout d'avoir des classes générés qui permettent un typage fort de l'application (pas de cast, pas de générique)
Bien sur il est possible d'utilisé ToPIA sans générateur, il est d'ailleurs utilisé ainsi pour les tests
ToPIA contient aussi des classes techniques réutilisables dans ses applications pour tout ce qui touche à l'authentification et l'autorisation (TopiaUser, TopiaGroup, TopiaPermission) (partie non encore développé)
La persistance
La persistence se base complètement sur hibernate, mais il est aussi possible d'indiquer que certaine classe doivent être sauvé dans des fichiers textes plutot qu'une base de données, cette persistence est appelée FlatFile.
Le TopiaContext doit être configuré avec un objet Properties. Celui-ci peut contenir différentes entrées. Vu que la persistence est complètement basé sur hibernate, même si vous n'avez que des entités sauvé en FlatFile il vous faudra fournir à hibernate un accès à une base de données. Celle-ci peu très bien être une base embarqué comme hsql, mckoi ou derby.
- topia.persistence.properties.file
- le fichier de propriété a utiliser pour configurer hibernate
- topia.persistence.directories
- la liste des repertoires contenant les mappings hibernates (.hbm.xml) la liste de repertoire est separer par des virgules ','
- topia.persistence.classes
- la liste des classes que doit géré ToPIA. On peut tres bien utiliser topia.persistence.directories pour un ensemble d'entié du meme repertoire et topia.persistence.classes pour d'autres classes
- topia.dao.flatfile.properties.file
- indique le fichier de configuration a utiliser en plus de la configuration du context
- topia.dao.flatfile.directory
- indique le répertoire au sauver les entités
- topia.dao.flatfile.directory.[fqn-entity]
- permet de spécifier un répertoire différent pour une entity spécifique
- topia.dao.flatfile.mapping
- permet d'indique le mapping a utiliser pour les entités
- topia.dao.flatfile.mapping.[fqn-entity]
- permet d'indique un mapping différent pour entité
à la place flatfile il est possible de mettre le FQN du DAO utilisé par exemple org.nuiton.topia.persistence.flatfile.TopiaDAOFlatFile
Si directory est absent alors "." est utilisé
les mappings s'écrivent de la façon suivant:
- ext=extension a ajouter au fichier contenant l'entity
- key=attribute
- body=attribute
Si key est absent alors on utilise le topiaId, key est utilisé comme nom de fichier de sauvegarde
Si body est absent alors on utilise un fichier de propriété pour sauver l'entity. Si body est présent seul cet attribut sera sauvé.
topia.dao.flatfile.mapping.key=topiaId
topia.dao.flatfile.mapping.fr.ifremer.isisfish.entities.Script.key=name
topia.dao.flatfile.mapping.fr.ifremer.isisfish.entities.Script.body=script
-
Interface Summary Interface Description TopiaContext TODO-FD20100507 : Need javadoc + translate the one on methods. -
Class Summary Class Description TopiaContextFactory TODO-FD20100507 : Need javadoc + translate the one on methods. -
Exception Summary Exception Description TopiaException Main exception for Topia errors on hibernate manipulations.TopiaNotFoundException TODO-FD20100507 : Need javadoc.TopiaRuntimeException TODO-FD20100507 : Need javadoc.TopiaVetoException TODO-FD20100507 : Need javadoc.