Должны ли классы домена grails быть привязаны к базе данных?

Я полный нуб, когда дело доходит до Грааля (и все еще очень нубист, когда дело доходит до отличного), поэтому я прошу прощения, если это глупый вопрос.

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

4 ответа

Решение

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

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

def isAttached() 
{
   return false
}

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

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

class YourDomainClass {

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

Смотрите документацию Grails и этот ответ. Похоже, что он был добавлен в Grails 2.0.1, но не документирован до версии 2.3.0.

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

Пара способов сделать это.

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

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

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

Другие вопросы по тегам