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 нотацией в реляционной СУБД. Контейнер не имеет жесткой, заранее определенной схемы и основан на множестве пар «ключ‑значение». Это позволяет использовать его как динамическое расширение объекта. Для добавления новых данных в контейнер не требуется перекомпиляция кода или изменение структуры СУБД.

Для создания нового класса в модуле необходимо:

  1. Cоздать файл спецификации класса odm. Данный файл удобнее всего создать по шаблону в Install IntelliJ IDEA (как добавить такой шаблон в ide показано в 1вом уроке).
    • Внимание

    • Шаблон по умолчанию содержит коллекцию без имени и включенную группировку. Если в группировке нет необходимости, её нужно удалить. Так же необходимо определить или удалить шаблоны для коллекций, в противном случае при генерации кода могут возникнуть ошибки.
  2. Определить атрибуты будущего класса и подключить коллекции, если они имеются.
  3. Сгенерировать код по файлу спецификации.
  4. Собрать проект.
  5. Сгенерировать таблицы.
  6. Добавить 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)  
}

Для изучения смотри: Руководство разработчика: Класс