Здравствуйте,
у меня есть небольшая таблица, которую я хочу загрузить в память в виде 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());
}
}
Я это делаю обычно таким образом:
Создаю бин-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();
...
...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Блоки с фиксированной высотой с inline-blockКак прижать их к верхней границе контейнера без абсолютного позиционирования?
В любом HTML-плеере при клике правой кнопкой мыши на видео открывается меню, в котором это самое видео можно "открыть в новой вкладке" и, тем...