Введение# Предисловие На кого ориентировано руководство Программные средства для работы Обзор Архитектура системы Тонкий клиент Мобильный клиент Балансировщик нагрузки Кластер серверов приложений Решение Кластер баз данных Уровни разработки Принципиальная схема Основные понятия Класс Бизнес объект Пакет Выборка Модуль Приложение Сессия приложения Взаимодействие с данными Объектное взаимодействие Реляционные запросы Начало работы с фреймворком Требования к аппаратному обеспечению рабочего места разработчика Создание новой БД для проекта Создание пользователя Создание БД Подключение расширений Настройка рабочего места Развёртывание рабочего места под Windows Развёртывание рабочего места под Astra Linux Развёртывание рабочего места под Alt Linux Прикладной проект Структура проекта Модуль Структура каталогов модуля Зависимости Подключение внешних библиотек Первая сборка проекта Развертывание первоначальных данных Запуск приложения Регистрация Отладка приложений Отладка бизнес-логики Перекомпиляция кода без перезапуска сервера Отладка выборки Языки разработки Scala Обработка исключений Объявление исключений Выбрасывания исключения Перехват исключений Конвертация java исключений в прикладные исключения Jexl скрипты Обработка исключений в jexl Добавленные методы Работа с датами Работа с sql Работа в контексте выборки Контекстная справка Команды Написание библиотек PL/pgSQL Требования к масштабируемости Общие принципы наименования Конвенция для разработки на scala Сокращения Scala типы для работы с данными NLong NNumber NGid NDate NString NBigDecimal NDuration Наименование переменных для nullable типов и атрибутов Примеры задания параметров Наименования Scala-пакетов Правила наименования сущностей Наименование классов Наименование пакетов Наименование процедур и функций Наименование параметра Наименование временных таблиц Наименование выборок Наименование отображений Формат комментария в систему контроля версий Стандартные сокращения Odm (Object domain model) Orm (Object-Relational Mapper) Pojo Dpi Dvi Api Pkg Avi Dvm (Domain view markup) Avm (Application view markup) Ata (Application table) Aro (Application row) Rop (Row provider) Сессия приложения Сессия базы данных Рабочее пространство (workspace) Точки сохранения Пользовательский сеанс Пользовательская блокировка Логические блокировки Оптимистические блокировки Пессимистическая блокировка Бизнес логика Ключевые стратегии создания масштабируемого решения Api Пример API Pkg Взаимодействие с базой данных Объектные запросы и ORM-операции Поведение при работе с кешем и БД ORM Кеширование в ORM Shared кеш (кеш второго уровня) Методы, использующие кеш Ограничения кеша и очистка Пакетные операции (bulk) refresh(entity) flush OQuery where orderBy batchAll batchIn forUpdate forUpdateNoWait unique tryCacheQueryResults Операции выборки для загрузки и обновления данных mergeItems Транзакционный индекс (TxIndex) byKey refreshByKey queryKeys forPartition load Объектный запрос c помощью выражений EclipseLink refreshByParent и byParent Объектный запрос большого списка Реляционные запросы Введение ASQL Подстановка связанных переменных (binding) Работа с несколькими столбцами через RowParser ATSQL ASelect Низкоуровневый доступ через JDBC Использование SQL(…) и параметров через on(…) Типичные ошибки Некорректное использование запросов на чтение Некорректное использование блокировок Некорректное формирование запроса Сравнение методов и работа с большими данными Сравнение методов Работа с большими данными Массовая вставка Массовый update\delete Размер транзакции