Способ, которым я хотел бы сделать это на начальной стадии разработки/для загрузки тестовых данных в приложение, - это хранить данные в файле CSV и просто загружать его в H2, когда приложение загрузки весны запускается с помощью ContextRefreshedEvent как показано ниже:
@Component
public class RootVerbLoader implements ApplicationListener<ContextRefreshedEvent> {
private static final int SOURCE_LANGUAGE = 1;
private static final int TARGET_LANGUAGE = 2;
private RootVerbRepository repo;
@Autowired
public void setRepo(RootVerbRepository repo) {
this.repo = repo;
}
@Override
public void onApplicationEvent(ContextRefreshedEvent arg0) {
loadDataFromCSV("classpath:hanasu.csv", "to speak", "はなす");
loadDataFromCSV("classpath:iku.csv", "to go", "いく");
loadDataFromCSV("classpath:iu.csv", "to say", "いう");
loadDataFromCSV("classpath:kaku.csv", "to write", "かく");
loadDataFromCSV("classpath:kasegu.csv", "to earn", "かせぐ");
loadDataFromCSV("classpath:kuru.csv", "to come", "くる");
loadDataFromCSV("classpath:matsu.csv", "to wait", "まつ");
loadDataFromCSV("classpath:miru.csv", "to look", "みる");
loadDataFromCSV("classpath:naru.csv", "to become", "なる");
loadDataFromCSV("classpath:nomu.csv", "to drink", "のむ");
loadDataFromCSV("classpath:shinu.csv", "to die", "しぬ");
loadDataFromCSV("classpath:suru.csv", "to do", "する");
loadDataFromCSV("classpath:yobu.csv", "to call", "よぶ");
}
private void loadDataFromCSV(String filename, String source, String target) {
Set<TranslationPair> conjugations = new HashSet<>();
try {
ResultSet rs = new Csv().read(filename, null, null);
int i = 1;
while (rs.next()) {
conjugations.add(
new TranslationPair(
rs.getString(SOURCE_LANGUAGE),
rs.getString(TARGET_LANGUAGE),
i
)
);
i++;
}
rs.close();
} catch(SQLException se) {
se.printStackTrace();
}
repo.save(new RootVerb(source, target, conjugations));
}
}
код для записи из данных в файл CSV также невероятно прост:
SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("NAME", Types.VARCHAR, 255, 0);
rs.addColumn("EMAIL", Types.VARCHAR, 255, 0);
rs.addRow("Bob Meier", "[email protected]");
rs.addRow("John Jones", "[email protected]");
new Csv().write("data/test.csv", rs, null);
Я считаю, что это очень быстрый способ прототипа структуры данных/схемы таблиц без необходимости писать какие-либо sql-скрипты или вообще много работать. Очень быстро начать.
Вы используете сервер H2, а затем подключаетесь к нему? Какую строку соединения JDBC вы используете для сервера и какую строку подключения используете в клиентах? –
Я использую весеннюю загрузку на стороне сервера и создаю некоторые данные (вызов сценария на стороне сервера для создания 20 случайных данных для теста) и поиск их через консоль H2. Строка соединения обеих сторон: «jdbc: h2: файл: ~/data/DBTest». – Jay