Я новичок в Grails. Я использую свою внешнюю базу данных mysql. Должен ли я создавать классы предметной области Grails для таблиц в моей базе данных (копировать мою базу данных в модель предметной области), или я могу создавать контроллеры и представления только для моих внешних таблиц mysql, не создавая классы предметной области?
Спасибо за ответы.






Нет, вы эффективно имитируете таблицы базы данных в своих доменах.
Фактически, если вы сначала создадите свои домены, они автоматически построят ваши таблицы; многие люди находят это более простым способом, как если бы у вас есть уже существующая база данных, вы должны ИДЕАЛЬНО согласовать ограничения, чтобы заставить ее работать.
Не требуется, чтобы вы использовали GORM с Grails. Фактически вы можете просто использовать классы и тому подобное из пакета groovy.sql и напрямую взаимодействовать с вашей базой данных, используя SQL и GroovyRowResult вместо классов предметной области.
Однако, если вы не используете GORM, вы также теряете много строительных лесов (например, для создания контроллеров и представлений), потому что у вас нет смоделированного домена.
Лучше объявить свой домен в классе, который может быть связан с базой данных.
класс домена пользователя
class User {
Long id
String name
static mapping = {
table 'user' //here user is database table name
version false
id column: 'id', generator: 'increment'
name column: 'name'
}
static constraints = {
id(nullable: true)
name(nullable: false)
}
}
вы можете использовать строительные леса в контроллере для создания CRUD, а также
class UserController {
static scaffold = User
def index() {
def userList = User.list()
[userList: userList]
}
}
Без объявления вашего класса домена вы получите ошибку при выполнении запроса из базы данных в контроллере.