Просто загрузите данные в @PostConstruct
обратном вызове:
@Service
public class ReferenceData {
private Map cached//...
@PostConstruct
public void loadReferenceData() {
//load from database and store in `cached` field
}
}
Будьте осторожны, @PostConstruct
не является транзакционным и не может быть, даже если помечено @Transactional
.
Другой подход заключается в использовании кеша Hibernate L2 и кеша запросов. Загружайте данные каждый раз, когда вам это нужно, из базы данных, и пусть слой кэширования, встроенный в Hibernate, обрабатывает их.