- Отгружено
- 23 сентября 2026 г. в 14:39 UTC
- Автор
- Kamo
- Завершение
- c4924af
Два связанных исправления к MemberRightsAppliedService, оба в одном файле: 1. ******************* (через realcChunk) и ******************* безоговорочно удалять и повторно вставлять каждый из рядов прикладных прав члена, каждый раз Они побежали. SecurityService's MemberRightsBackfillService называет путь для КАЖДОГО ОРГАНА Каждый ботинок (самовосстанавливающийся, по дизайну — см. его собственный javadoc), и рекомпутация идемпотентна: Устойчивый ботинок получает идентичный набор. Измерения в производстве pg stat statements: ~12.7M INSERTs против таблицы ~30K-ряда — примерно 300 переписываний полного стола, по одному на загрузку, почти Все они пишут то, что уже было. Оба метода теперь дифференцируют недавно вычисленные наборы против того, что уже имеет член права приложения. (одна большая часть читается за целый кусок) и только ясно + переписать членов, чьи права на самом деле отличается. Загрузка без операции теперь стоит одно чтение и ноль записей. 2. вычислить права участника (ядро как пути записи выше, так и только для чтения) ComputeMemberRights SessionRefreshController polls on every session refresh) walked член.getRoles(), **************** Должностные обязанности()/getRights() и Member.getRights() как отдельные ленивые коллекции — плюс еще одна ленивая нагрузка на отдельную роль; за собственные права этой роли. Без ограничений на одного члена. Шесть новых полей для репозиториев (MemberRoleRepository, DepartmentRoleRepository, DepartmentRightRepository, JobTitleRoleRepository, JobTitleRightRepository, MemberRightRepository — первый и последний уже существовали) заменить эти ленивые грузы фиксированным, небольшим количеством сыпучих Запросы, каждый со своими правами на роль. Умышленно НЕ @EntityGraph, основанный на Член / член команды: оба являются @Inheritance (JOINED) и графом сущности, который идет дальше ассоциации от объединенного предприятия - это точная форма, которая приняла / ведет к снижению производства на Hibernate 6.2.13 (недостающая запись из пункта FROM для корневой таблицы — см. LeadAssigneeRef). Каждый новый Репозиторий вместо этого укоренен в объекте CHILD (ни один из которых не несет @Inheritance) и отфильтрован. Идентификатор родителя. Поле EntityManager с @PersistenceContext было сначала опробовано и возвращено: оно обрабатывается Пост-процессор Spring's JPA-aware всякий раз, когда Spring-orm находится на траектории класса, поэтому вручную обновленный услуга в контексте без фасоли EntityManagerFactory (SignInReadRetry) Весна с ручным рулоном Контекст, который осуществляет @RetryOnDbConflict через реальный AOP proxy Прямо. Факультативно-резисторные поля деградируют так же, как это уже было сделано в ModelResolver: @Autowired (обязательно = ложный) оставляет их недействительными без бобов такого типа, и шесть помощников падают. Вернемся к исходному пути ленивых нагрузок, неизменному в каждом существующем тесте. SessionRefreshController поддерживает вычисления в режиме реального времени (не с помощью постоянного снимка) - эта конечная точка Вся суть в том, что «то, что верно сейчас», что явно не всегда было последним.
