Я использую оба и считаю, что у меня есть веские причины, которыми я хочу поделиться с вами.
Зачем использовать grails.gorm.autoFlush = true
?
Причинана самом деле не сохранение сущности / домена при вызове save () - это не то, что я говорю API.Это вызывает много головной боли, когда Hibernate сбрасывает на 16 строк перед выполнением, и это приносит боль для отладки.Если ваша команда не является Java-разработчиком, это очень тяжело.
Grails позаимствовал шаблон активной записи из Ruby (методы персистентности которого вызываются напрямую, например, domain.save), но этот Ruby действительно работает, когдаВызывается save (), но Grails этого не делает, потому что они скрывают «Hibernate Session» от пользователя / разработчика API.Это серьезный Leak Abstraction сбой GORM, который мы можем решить с помощью этого параметра конфигурации.
После установки, если вам действительно нужен шаблон единицы работы Hibernate,который связывает вызовы SQL и делает это только один раз по соображениям производительности, просто используйте domain.save(flush:false)
, когда это необходимо.
Зачем использовать grails.gorm.failOnError = true
?
Никогда не скрывайте исключение от пользователя.Все великие программисты на Java знают это.Если вам «действительно очень» нужно спрятаться, запишите это как предупреждение.Но, к сожалению, этого не происходит, когда валидация Grails завершается неудачей (без регистрации!) И делает программистов слепыми, что действительно трудно для новичков, которые этого не знают.Самые опытные парни просто говорят «это легко подправить», но это просто порок, а не лучший способ.
Ради этих утечек в GORM, это были единственные жалобы, которые у меня были с Grails в прошлом,В настоящее время они только что использовали этот конфиг params.