Здравствуйте,
у меня есть небольшая таблица, которую я хочу загрузить в память в виде 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();
...
...
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости