AddressImageCache.ktAddressImageDO (excluyendo datos binarios de imagen). Proporciona una búsqueda rápida para saber si una dirección tiene una imagen y cuál es su tipo.AddressImageCache extiende AbstractCache, la clase base de ProjectForge para cachés actualizables. El framework llama a refresh() periódicamente o bajo demanda, sincronizado para evitar modificaciones concurrentes.
El caché almacena un Map<Long, AddressImageDO> donde cada valor es un AddressImageDO ligero que contiene solo:
lastUpdate — Marca de tiempo de modificación para comprobaciones de frescura del caché.imageType — El formato de imagen (ImageType.PNG por defecto).Los datos binarios están excluidos — no se cargan los arreglos de bytes de preview ni de image. Esto mantiene el caché eficiente en memoria mientras sigue respondiendo instantáneamente a la pregunta "¿la dirección X tiene una imagen?".
refresh() se ejecuta dentro de un contexto de persistencia aislado de solo lectura (para límites de transacción limpios). Utiliza una consulta JPQL seleccionando addressId, lastUpdate e imageType como una proyección Tuple, reconstruyendo todo el mapa de forma atómica para evitar problemas de lectura concurrente.
getImage(addressId) es la única API pública. Llama a checkRefresh() (heredado de AbstractCache) para garantizar la frescura antes de buscar en el mapa. Un retorno nulo significa que no existe ninguna imagen para esa dirección.
El objeto complementario contiene un lateinit var instance establecido en @PostConstruct, permitiendo el acceso estático desde código que no puede usar inyección de Spring.
868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024 -> 2025. 943947aaa Direcciones: soporte de gif y jpeg 0ceceb28f Todas las actualizaciones de caché ahora se ejecutan en transacciones aisladas 5989b32fd BaseDao: mecanismo de onChangeLister refactorizado. 1b50060c3 BaseDao: renombrado: get -> find, save -> insert, getList -> select, load -> select