2016-09-12 2 views
0

В DB (Oracle) есть таблица, в которой хранятся «код» и «Описание». Мне нужно загрузить эти данные таблицы во время запуска моего приложения и сохранить его в переменной (возможно, в объекте Map), чтобы я мог искать описание кода для каждого запроса без попадания в БД для каждого запроса. Какой был бы лучший способ сделать это?Загрузка данных из базы данных во время запуска приложения

Приложение представляет собой автономное приложение Java на основе Spring framework.

Спасибо.

+0

Таким же образом вы выполняете все другие запросы к базе данных. Какая часть вас беспокоит? --- Кроме того, вы можете захотеть рассмотреть ленивую загрузку, т. Е. Не запрашивать базу данных, пока вам не понадобится описание в первый раз. – Andreas

+0

ну, ответ может быть немного сложным, вы можете справиться с этим двумя способами: «JDBC» и «Hibernate», нам нужно больше информации, чтобы правильно ответить. Взгляните на «Подготовленный оператор JDBC», вероятно, самый простой способ, чтобы вы могли заполнить объект карты из подготовленного оператора – RudiDudi

+0

Да. Я запрошу DB для получения этих данных. Для этого я больше смотрел на конфигурацию Spring. Должен ли я объявлять компонент и определять метод init, который запрашивает БД и загружает данные? или Есть ли другой лучший способ сделать это? Благодарю. – Kishore

ответ

0

Вы можете создать класс, который выбирает метод запуска приложения. Весной вы можете реализовать интерфейс ApplicationListener с событием ApplicationReadyEvent.

На этом этапе ваше приложение готово к общению с базой данных и выполнит ваш код автоматически.

@Component 
    public class AppBootstrapListener implements  ApplicationListener<ApplicationReadyEvent> { 
// Inject Service or repository if you have. 

/** 
* Executes on application ready event 
* Check's if data exists & calls to create or read data 
*/ 
@Override 
public void onApplicationEvent(ApplicationReadyEvent event) { 
    // code here 
} 
} 

Для любого clearification добавить комментарий

0

Я не уверен, но весенние события могут помочь. Например, вы можете использовать ContextRefreshedEvent - это событие публикуется всякий раз, когда контекст Spring запускается или обновляется.

Пожалуйста, проверьте: running-code-on-spring-boot-startup или better-application-events-in-spring-framework-4-2

Смежные вопросы