2010-08-16 18 views
8

Soy un completo novato en lo que respecta a los griales (y todavía muy novato cuando se trata de groovy), así que me disculpo si esta es una pregunta tonta.¿Las clases de dominio de Grails deben estar vinculadas a una base de datos?

Estoy construyendo una aplicación web simple y quiero controlar porciones del dominio en mi aplicación basadas en objetos del sistema de archivos (es decir, estructura de directorios y tipo de archivo) en lugar de datos de la base de datos. ¿Qué tan fácil es hacer esto o son los objetos de dominio tan entrelazados con GORM que no vale la pena el esfuerzo de intentarlo?

+1

No es una respuesta, pero le puede interesar saber que la implementación de persistencia se está abstrayendo de GORM. Esto permitirá a GORM trabajar con implementaciones de SQL como Redis, Neo4j, etc. y otras como repositorios de JCR. También debería ser posible agregar una implementación básica del sistema de archivos. Esté atento a los anuncios de Grails. –

Respuesta

9

Me encontré con esta pregunta hace un par de semanas.

Puede agregar el siguiente fragmento al Domain Class.

def isAttached() 
{ 
    return false 
} 

Ahora no está conectado a su base de datos. Voila!

+0

Parece que si bien no hubo respuesta cuando pregunté en versiones posteriores de Grails manejar esta situación. –

1

Un par de formas de hacerlo.

En primer lugar, puede declarar sus propiedades que se correlacionan con los datos del sistema de archivos como transitorias, y acceder al sistema de archivos cuando se llaman a getters/setters (debe sobrescribirlos). También puede cargarlos usando onLoad si necesita que estén siempre en la memoria.

Segundo - Hibernate maneja la persistencia. Hibernate le permite definir su propio tipo de usuario, que puede manejar la persistencia de la forma que desee. De esta manera podría sucederle de manera más transparente (aunque usted debe asegurarse de entender Hibernate bastante bien, para asegurarse de que no haya ningún efecto secundario, no estoy seguro).

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

1

No hay manera integrada para mapear clases de dominio para presentar los objetos del sistema como se ha descrito, pero igualmente no existe el requisito de que sus clases de dominio se asignan a una base de datos relacional. El tema de cómo crear una aplicación Grails que no utiliza una base de datos relacional se trata here y here (y posiblemente en otro lugar).

4

También puede utilizar:

class YourDomainClass { 

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

Ver grails documentation y this answer. Parece haber sido agregado en Grails 2.0.1 pero no documentado hasta la versión 2.3.0.

Cuestiones relacionadas