Урок 2. Сессии, Модель данных
3. Общие сведения о классах
Определяет правила хранения и обработки таблицы базы данных.
Класс позволяет существенно ускорить разработку бизнес логики ориентированную на работу с данными. Программисту достаточно объявить перечень атрибутов класса чтобы за счет кодо-генерации получить набор готовых сервисов.
Перечень генерируемых элементов:
-
Доменная автономная бизнес логика(
Dpi
)
Содержит код для автономной бизнес логики -
Каркас прикладной автономной логики(
Api
)scala
класс с окончаниемApi
, в котором пишется автономная бизнес логика для работы с классом. Наследуется отDpi
-
Доменная интерактивная бизнес логика(
Dvi
) -
Каркас прикладной интерактивной логики(
Avi
)scala
класс с окончаниемAvi
, в котором пишется интерактивная бизнес логика. Наследуется отDvi
-
Доменная разметка выборки(
dvm.xml
)
Содержит сгенерированную по умолчанию разметку выборки. -
Каркас прикладной декларации пользовательского интерфейса(
Avm
)xml
файл с расширениемavm.xml
, в котором пишется разметка выборки -
Интеграция с
Orm
-
Pojo
объект для хранения данных в кэше -
Aro
объект интеграции pojo в фреймворк
-
Типы данных
Система имеет специализированный набор простых и объектных типов для удобной обработки данных. Объектные типы при необходимости интегрированы в контекст сессии что позволяет обеспечить высокую производительность системы за счет минимизации операций сериализации\десериализации.
Основные типы данных, используемые для атрибутов класса:
-
Целое число
-
Дробное число
-
Строка
-
Дата
-
Ссылка (на объект заданного класса)
-
Ссылка на класс
-
Переменная ссылка (на объект произвольного класса)
-
Глобальный идентификатор gid
-
Json контейнер
Простые типы
Простыми типами являются: Число, строка, дата
Тип |
postgresql |
odm |
Рекомендация по использованию |
---|---|---|---|
Строка фиксированной длинны |
varchar |
Varchar |
Текст до 4000 символов |
Строка переменной длинны |
text |
Text |
Текст до 15 мегабайт |
Число |
number |
Number |
Целое или дробное число |
Дата |
date |
Date |
Дата, дата и время |
Ссылочные типы
Данные классов могут быть связаны между собой. Для организации связей между классами используются специальные типы.
Ссылка на класс
Хранит ссылку на класс. Обычно используется совместно с типом переменная ссылка
для хранения класса, объект которого содержится в переменной ссылке.
Глобальный идентификатор gid
Gid является уникальным идентификатором в рамках системы. Переменная ссылка на gid является альтернативой системе переменной ссылочности из двух атрибутов (ссылка на класс + переменная ссылка на объект). Для организации переменной ссылки через gid используется один атрибут.
Json контейнер
Json контейнер – это расширение объекта класса NoSQL нотацией в реляционной СУБД. Контейнер не имеет жесткой, заранее определенной схемы и основан на множестве пар «ключ‑значение». Это позволяет использовать его как динамическое расширение объекта. Для добавления новых данных в контейнер не требуется перекомпиляция кода или изменение структуры СУБД.
Для создания нового класса в модуле необходимо:
-
Cоздать файл спецификации класса odm. Данный файл удобнее всего создать по шаблону в Install IntelliJ IDEA (как добавить такой шаблон в ide показано в 1вом уроке).
- Внимание
-
- Шаблон по умолчанию содержит коллекцию без имени и включенную группировку. Если в группировке нет необходимости, её нужно удалить. Так же необходимо определить или удалить шаблоны для коллекций, в противном случае при генерации кода могут возникнуть ошибки.
- Определить атрибуты будущего класса и подключить коллекции, если они имеются.
- Сгенерировать код по файлу спецификации.
- Собрать проект.
- Сгенерировать таблицы.
- Добавить orm класса в файл src/main/resources/orm/all.xml.
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!--suppress JpaConfigDomFacetInspection --><persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> <persistence-unit name="all"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <!--<mapping-file>ru/bitec/app/lbr/Lbr_Name.orm.xml</mapping-file>--> ... <mapping-file>ru/bitec/app/lbr/Lbr_ClassName.orm.xml</mapping-file> ... </persistence-unit> </persistence>
Работа c провайдерами строк
Провайдер строки - Rop используется для работы со строкой данных (Aro), загруженных в рабочее пространство, обеспечивая гарантию того, что при доступе к строке данная строка будет находиться в рабочем пространстве.
Метод получения rop:
thisApi().load(идентификатор.asNLong)
Примеры сеттеров в файле выборки:
val rop = thisRop thisApi().setidContras(rop,getVar("super$id").asNLong)
Работа с rop в API:
for (ropGrade <- new OQuery(entityAta.Type){ where (t.idGdsGrade === idpGdsGrade) }) { setidGdsGrade(ropGrade, None.nl) }
Для изучения смотри: Руководство разработчика: Класс