2012-02-15 4 views
4

Весной сгенерированный класс безопасности UserRole или SecUserSecRole (можно было бы назвать его любым, что вы выберете) есть команда сделать new UserRole() и сохранить его с помощью: .save(flush:flush, insert:true)Grails: что делает .save (flush: flush, insert: true) делают иначе, чем .save (flush: true)

Что это значит? Чем это отличается от .save (flush: true)?

ответ

5

От Grails docs:

вставки (опция) - Если установлено значение истина заставит Hibernate сделать SQL INSERT, это полезно в некоторых ситуациях, когда устаревшие базы данных (например, AS/400) участвуют и Hibernate не может определить, следует ли сделать INSERT или UPDATE

+0

Так с «общими» базами данных, как Н2 или MySQL тех '.save () 's будет делать то же самое? – Mikey

+0

Да, это было бы так же. – doelleri

+0

@doelleri - проверять запросы на спящий режим, думаю, если вы уверены, что объект не существует, insert: true может уменьшить один запрос select, чтобы проверить, требуется ли обновление в некоторых ситуациях. –

4

Люди обычно используют флеш(), потому что они неудобны тем, как Hibernate работает.

Если вы хотите узнать больше об этом, проверить это http://blog.springsource.com/2010/06/23/gorm-gotchas-part-1/

Есть моменты, когда вам нужно, однако, в частности, когда вы работаете в том же потоке, как вызов сохранить(), и вы должны быть убедитесь, что объект домена сохраняется в БД. Кроме того, некоторые ограничения в вашем домене используют базу данных для проверки правильности данных. Иногда необходимо убедиться, что валидация работает. Существует пример того, что здесь:

http://johnrellis.blogspot.com/2009/09/grails-constraints-across-relationships.html

Так в основном, вы должны использовать только на одном уровне, если вам действительно нужно что-то в БД прямо сейчас! Это меньше, чем вы думаете. Надеюсь, что эта помощь, а не один бита туалетного юмора в разговоре о промывке ... так гордой :)

URL: http://grails.1312388.n4.nabble.com/When-to-use-domain-save-flush-true-or-domain-save-td2289869.html

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