AddressImageDO.ktAddressDO для повышения производительности — изображения загружаются только по запросу через именованные запросы.
Данная Kotlin-сущность была выделена из AddressDO (коммит f99817436) для улучшения производительности за счёт
ленивой загрузки. Ключевые аспекты дизайна:
T_ADDRESS_IMAGE, связана с родительской AddressDO через @OneToOne с FetchType.LAZY.image (полный размер) и imagePreview (миниатюра) обе аннотированы @Basic(fetch = FetchType.LAZY), что предотвращает загрузку тяжёлых BLOB-данных в списках. Именованные запросы SELECT_WITHOUT_IMAGES и SELECT_IMAGE_ONLY обеспечивают выборочное получение.ImageType (JPG, GIF, PNG), хранится как строка из 5 символов.address использует @JsonSerialize(using = IdOnlySerializer::class) — при сериализации в JSON (REST API) передаётся только address.id, что предотвращает циклическую сериализацию и глубокие графы объектов.@Indexed отсутствует у этой сущности, что означает, что изображения адресов индексируются неявно через родительскую AddressDO (которая зарегистрирована в полнотекстовом поиске).| Запрос | Назначение |
|---|---|
SELECT_WITHOUT_IMAGES |
Получение метаданных изображения (ID, тип, lastUpdate) без BLOB-данных — используется в списках |
SELECT_IMAGE_ONLY |
Получение полного BLOB изображения — используется для скачивания |
SELECT_IMAGE_PREVIEW_ONLY |
Получение BLOB миниатюры/предпросмотра — используется в галереях |
DELETE_ALL_IMAGES_BY_ADDRESS_ID |
Массовое удаление всех изображений адреса — используется при удалении адреса |
Сущность поддерживает обработку изображений CardDAV (коммит c5b4b738b), что делает фотографии адресов доступными
по протоколу CardDAV вместе с данными vCard.
868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024 -> 2025. 0237d5eba Рефакторинг JSON-сериализации: введены IdOnlySerializer и IdsOnlySerializer. 2bcdfbbc6 WIP: хранение ордеров. 943947aaa Адреса: поддержка gif и jpeg (также для сервера carddav). c5b4b738b WIP: CardDav сервер, обработка изображений. d6ad9ea38 Работа над миграцией в процессе... 66ec668f6 Работа над миграцией в процессе... e33c8b9c2 Работа над миграцией в процессе... 06828f490 Работа над миграцией в процессе... b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. 5f7ef41b8 Copyright 2021 -> 2022 f54103172 AddressDao.forceDelete теперь работает корректно, даже если были изображения. ceb63e8a1 Заголовок исходного кода: (C) 2001-2021. ae182f8a1 Github issue #135, оптимизация производительности с JProfiler. f99817436 Изображения адресов теперь в отдельной сущности. Улучшает производительность за счёт ленивой загрузки. 7c79f1922 Copyright заголовка исходников -> 2020. af35917ac Ещё больше очистки кода ca5a7c00f Оптимизация импортов 05244ff19 Обновлены или созданы заголовки всех Kotlin-файлов. da6eec0f6 AddressAttrDataDO.java -> AddressAttrDataDO.kt 9ebb88522 Первоначальный коммит