У меня есть объект (аннотации JPA с интерфейсом запросов Hibernate), который имеет составной бизнес-ключ из двух свойств (external-id
и subsidiary-id
[это внешний ключ]) и первичный ключ БД.
У меня есть многопоточный процесс JavaSE, который запускается «по отношению к дочерней компании» и должен запрашивать / обновлять / вставлять эти объекты, используя этот составной ключ (он получает наборы данных из этих external-ids
).
Я могу гарантировать, что после загрузки такого процесса никакой другой процесс не попытается вставить / обновить / удалить эту дочернюю компанию.
Я хочу, чтобы при запуске загружались все существующие сущности этой дочерней компании, а затем каждый запрос на пару [externalId,subsidiaryId]
проходить через кеш и только в случае пропуска проходить через БД.В случае, если один из потоков процесса вставляет сущность, я, конечно, хочу, чтобы это было добавлено в этот кеш.
Какой лучший курс действий?
Я знаю, что есть кеширование запросов, но из того, что я могу собрать, все равно будет пропущен первый раз каждая [externalId,subsidiaryId]
пара.
Спасибо, и если есть что-то, что мне не совсем понятно, пожалуйста, спросите
Обновление
Мне пришлось прекратить исследовать эту проблему, но теперь, когда я пришелВозвращаясь к этому, я думаю, что кажется разумным, что только кеш запросов и ответ JB Nizet являются единственными применимыми.
Я приму ответ JB Nizet, так как он интересен, и я мог бы использовать его (пока не уверен).