2010-08-16 8 views
8

Je suis un noob complet quand il s'agit de grails (et encore très noobish quand il s'agit de groovy) donc je m'excuse si c'est une question stupide. Je construis une application Web simple et je veux contrôler des parties du domaine dans mon application en fonction des objets du système de fichiers (c'est-à-dire la structure de répertoires et le type de fichier) plutôt que des données de base de données. Est-ce facile de le faire ou est-ce que les objets du domaine sont tellement liés à GORM qu'il ne vaut pas la peine d'essayer?Les classes de domaine grails doivent-elles être liées à une base de données?

+1

Ce n'est pas une réponse, mais vous serez peut-être intéressé d'apprendre que l'implémentation de persistance est abstraite de GORM. Cela permettra à GORM de travailler avec des implémentations noSQL comme Redis, Neo4j, etc. et d'autres telles que les dépôts JCR. Il devrait être possible d'ajouter une implémentation basique du système de fichiers. Gardez un œil sur les annonces de Grails. –

Répondre

9

J'ai moi-même rencontré cette question il y a quelques semaines. Vous pouvez simplement ajouter l'extrait suivant au code Domain Class.

def isAttached() 
{ 
    return false 
} 

Maintenant, il n'est pas connecté à votre base de données. Voila!

+0

Il semble que, bien qu'il n'y ait pas eu de réponse, j'ai demandé aux versions ultérieures de grails de gérer cette situation. –

1

Un couple de façons de le faire. D'abord, vous pouvez déclarer vos propriétés mappées aux données du système de fichiers en tant que transitoires, et accéder au système de fichiers lorsque les getters/setters sont appelés (vous devez les remplacer). Vous pouvez également les charger en utilisant onLoad si vous avez besoin qu'ils soient toujours en mémoire.

Deuxième - Hibernate gère la persistance. Hibernate vous permet de définir votre propre type d'utilisateur, qui peut gérer la persistance comme vous le souhaitez. De cette façon, cela pourrait vous arriver de façon plus transparente (même si vous devez vous assurer que vous comprenez assez bien Hibernate, pour s'assurer qu'il n'y a pas d'effets secondaires, je ne suis pas sûr).

http://i-proving.com/space/Technologies/Hibernate/User+Types+in+Hibernate

1

Il n'y a aucun moyen intégré pour la carte des classes de domaine pour déposer des objets du système que vous avez décrit, mais aussi il n'y a pas besoin que vos classes de domaine à une carte base de données relationnelle. Le sujet de la création d'une application Grails qui n'utilise pas de base de données relationnelle est adressé here et here (et éventuellement ailleurs).

4

Vous pouvez également utiliser:

class YourDomainClass { 

    static mapWith = "none" // disable persistence for this domain class 

Voir grails documentation et this answer. Apparaît avoir été ajouté dans Grails 2.0.1 mais pas documenté jusqu'à la version 2.3.0.

Questions connexes