Spring: как загрузить таблицу из DB в память?

316
16 августа 2017, 16:53

Здравствуйте, у меня есть небольшая таблица, которую я хочу загрузить в память в виде List<Country>, чтобы не дергать БД. Но... как это правильно сделать?

DataSource такой:

@Configuration
public class DataSourceConfig {
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
    @Bean
    public DataSource dataSource() {
        HikariDataSource dataSource = new HikariDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setMaximumPoolSize(10);
        return dataSource;
    }
    @Bean
    public Sql2o sql2o() {
        return new Sql2o(dataSource());
    }
}
Answer 1

Я это делаю обычно таким образом:

Создаю бин-holder с коллецией/мапом объектов, в методе @PostConstruct выгружаю из БД необходимые данные ну и реализую необходимые get методы.

Псевдоjavaкод:

@Component
public class CountryHolder {
    @Inject/@Autowired
    private Dao/DataSource dao/dataSource;
    private Map<String, Country> countries; //ключ, нампример, название страны
    @PostConstruct
    private void initCountries(){
        //Выгружаем из нужной таблицы данные, инициализируем countries
    }        
    /*
    ...
    ...//необходимые методы для работы
    ...
    */
}

далее в коде можете инжектить этот бин и использовать по назначению

@Inject
private CountryHolder countryHolder;
...
...
countryHolder.getCountries();
...
...
READ ALSO
Как выровнять блоки по верхней границе?

Как выровнять блоки по верхней границе?

Блоки с фиксированной высотой с inline-blockКак прижать их к верхней границе контейнера без абсолютного позиционирования?

214
Как выровнять текст по картинке

Как выровнять текст по картинке

Здравствуйте, есть код

360
скрыть меню html видео плеера

скрыть меню html видео плеера

В любом HTML-плеере при клике правой кнопкой мыши на видео открывается меню, в котором это самое видео можно "открыть в новой вкладке" и, тем...

284