Урок 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) }
Для изучения смотри: Руководство разработчика: Класс