Grails известен как управляемый доменом язык, что означает, что мы можем создавать приложения, используя подход снизу вверх, который ближе к объектно-ориентированному программированию. GORM (реляционное сопоставление объектов Grail) использует intern Hibernate для сопоставления домена с таблицей, которая дает жизнь моделированию домена. Если бы мы объединили все только на основе домена, мы могли бы создать целое веб-приложение. Строительные леса могут принести дизайн домена непосредственно в видимое состояние для бизнес-пользователей с дополнительным участием
Но имейте в виду, что Grails — это гибкая среда разработки. Это означает, что мы быстро создаем приложение, разворачиваем и запускаем его одним движением и вносим изменения в любой уровень, не влияя на другие части, такие как интерфейс пользователя, моделирование домена, класс обслуживания и т. Д.
Создать класс домена
Grails рассматривает доменные классы как наиболее важную часть приложения. Это корень приложения, которое помогает визуализировать приложение в целом. Вы можете рассматривать его как объект сущности, который тесно связан с таблицей базы данных.
Начнем с создания простого доменного имени класса User с полями username и userpassword
1
2
3
|
D:\grails_book\firstapp>grails create-domain- class com.UserManagement.User This creates a new class file in /firstapp /domain/com/UserManagement/User.groovy (A corresponding unit test in /test/unit/com/grailsinaction/UserTests.groovy). |
1
2
3
4
5
6
7
8
9
|
package firstapp.domain.com.UserManagement class User { long userid String username String password static constraints = { username(blank: false ) } } |
Примечание: нам не нужно беспокоиться о методах установки и получения, так как Grails / Groovy генерируют динамически.
По умолчанию все поля в доменном классе сохраняются в базе данных. Класс User содержит два поля username и password, которые будут сопоставлены с таблицей User с именем столбца username и password. GORM предоставляет следующие динамические методы для доступа к базе данных без непосредственного изучения PL / SQL.
- User.save () сохраняет данные в таблицу User в базе данных.
- User.delete () удаляет данные из таблицы User.
- User.list () возвращает список пользователей.
- User.get () возвращает одного пользователя
отношения
Grails дает гибкость для создания различных комбинаций отображения, таких как один-к-одному, один-ко-многим, многие-ко-многим.
Он использует ownTo для однонаправленного и hasMany и прямой ссылки для двунаправленного. hasMany также использует для многих отношений. В следующем разделе мы подробно обсудим использование этих свойств.
Отношения один-к-одному
Отношения «один к одному» могут быть однонаправленными или двунаправленными с однозначной ссылкой. Например, у пользователя есть один адрес, и каждый адрес принадлежит только одному пользователю. Следующий рисунок иллюстрирует взаимно-однозначную связь между пользователем и его адресом.
Рисунок Назначение один-на-один для сущностей
Для определения отношений между пользователем и адресом сначала мы создадим класс домена следующим образом
Мы начнем создавать
1
2
|
D:\grails_book\firstapp>grails create-domain- class com.onetoone.domain.Book D:\grails_book\firstapp>grails create-domain- class com.onetoone.domain.Author |
В приведенном ниже примере поле ownTo информирует GORM, что Book имеет отношение к Author и имеет право на каскад, поэтому, если какой-либо Author удален, соответствующая Book также будет удалена. Мы можем определить отношение «один-к-одному» в однонаправленном или двунаправленном виде, определив ownTo в объекте Address и добавив ссылку на Address в объекте User (owner).
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
package com.onetoone.domain class Book { Long id String bookName String bookDesc static belongsTo=Author //Book belong to Author static constraints = { //For validtion } String toString(){ "Book name:${bookName}" } } |
Отношения один-ко-многим
Отношение один-ко-многим возникает, когда один объект имеет многозначные отношения с другим объектом.
Например, существует отношение один ко многим между сотрудником и отделом. На рисунке ниже показано, что в отделе может быть много сотрудников, но каждый отдельный сотрудник может работать только в одном отделе.
Рисунок: Назначение «один ко многим» для сущностей
Grails представляет свойства hasMany и ownTo для установления отношений «один ко многим».
Например, для hasMany необходимо определить домен домена Department, а для класса домена Employee необходимо определить следующее:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package com.onetomany.domain class Department { long id String departname String departmentLOB static hasMany=[employees:Employee] static constraints = { } } package com.onetomany.domain class Employee { long id String employeename String emailid String phone static belongsTo=Department static constraints = { employeename(blank: false ) } static mapping = { sort employeename: "desc" // "desc" for descending // "asc" for ascending } } |
После установления отношения «один ко многим» между Department и Employee Grails автоматически добавляет два новых метода в класс User: Department.addToEmployees () и Department.removeFromEmployees () для добавления ссылочных объектов.
Пожалуйста, нажмите здесь, чтобы скачать код
Вывод
Домен — это сердце разработки на основе Grail, которая отображает домен как сущность в таблицу базы данных без конфигурации или аннотации (используется в среде на основе JPA).