Несколько вызовов динамических методов или объявление переменной в Grails - PullRequest
0 голосов
/ 06 апреля 2010

На мой взгляд, если у меня возникнет ситуация, когда мне нужно использовать динамический метод (например, Domain.findByName ("name")) в нескольких местах, было бы лучше определить переменную с помощью и обратиться к ней а не иметь динамический метод в нескольких местах? Я знаю, что это кажется очевидным ответом, но я просто хотел убедиться, что Grails не кеширует его или что-то еще, и на самом деле выполняется два вызова БД.

Ответы [ 2 ]

1 голос
/ 06 апреля 2010

По умолчанию, grails будет только кэшировать запросы «get» (например, Book.get (4)), если вы не настроите дополнительное кэширование, вы попадете в базу данных для каждого запроса (как вы видите).

Подробнее см. в разделе 'кэширование запросов' документации Grails .

Если вы хотите, чтобы вызов был выполнен один раз (что имеет смысл впредставление, поскольку вы хотите, чтобы оно было согласованным), я бы либо сделал запрос в действии и передал его в модель, либо вы могли бы также использовать g: set в своем представлении, чтобы установить его (хотя это звучиткак будто это больше подходит для контроллера или службы).

0 голосов
/ 06 апреля 2010

Было бы лучше отправить объект домена в представление как часть модели, а не вызывать Domain.findByName("name") из представления.

Так что в вашем методе контроллера вы бы хотели

def myAction = {
    def myObject = Domain.findByName("name")
    // do other stuff
    [myObject: myObject]
}

тогда, по вашему мнению, вы можете получить к нему доступ

${myObject.property}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...