2010-08-16 2 views
8

Я полный noob, когда дело доходит до grails (и все еще очень noobish, когда дело доходит до groovy), поэтому я извиняюсь, если это глупый вопрос.Нужны ли классы домена grails для привязки к базе данных?

Я создаю простое веб-приложение, и я хочу управлять частями домена в своем приложении на основе объектов файловой системы (т. Е. Структуры каталогов и типа файла), а не данных базы данных. Насколько легко это сделать или объекты домена настолько переплетены с GORM, что не стоит пытаться попробовать?

+1

Не ответ, но вам может быть интересно узнать, что реализация персистентности абстрагируется от GORM. Это позволит GORM работать с реализациями noSQL, такими как Redis, Neo4j и т. Д. И другими, такими как репозитории JCR. Также следует добавить базовую реализацию файловой системы. Следите за объявлениями Grails. –

ответ

9

Я столкнулся с этим вопросом пару недель назад.

Вы можете просто добавить следующий фрагмент к Domain Class.

def isAttached() 
{ 
    return false 
} 

Теперь он не подключен к вашей базе данных. Вуаля!

+0

Похоже, что когда не было ответа, когда я спросил более поздние версии, Грайль справится с этой ситуацией. –

1

Несколько способов сделать это.

Во-первых, вы можете объявить свои свойства, которые сопоставляются с данными файловой системы как временные, и перейти в файловую систему при вызове getters/seters (вы должны переопределить их). Вы также можете загрузить их с помощью onLoad, если вам нужно, чтобы они всегда были в памяти.

Второй - Hibernate обрабатывает постоянство. Hibernate позволяет вам определять свой собственный тип пользователя, который может обрабатывать постоянство, какой бы вы ни хотели. Таким образом, это может произойти для вас более прозрачно (хотя вам нужно убедиться, что вы хорошо понимаете спящий режим, чтобы убедиться, что никаких побочных эффектов нет, я не уверен).

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

1

Там нет встроенного способа отображения классов домена в файловой системе объектов, как вы описали, но в равной степени не существует требования, чтобы ваши классы домена сопоставляются с реляционной базой данных. Вопрос о том, как создать приложение Grails, которое не использует реляционную базу данных, адресуется here и here (и, возможно, в другом месте).

4

Вы также можете использовать:

class YourDomainClass { 

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

См grails documentation и this answer. Похоже, что он добавлен в Grails 2.0.1, но не задокументирован до версии 2.3.0.

Смежные вопросы