хороший выбор

у небольшое демонстрационное приложение на Java с использованием Spring, которое должно иметь доступ к базе данных. Он должен работать на разных машинах, и для создания реальной базы данных потребуется слишком много усилий. Поэтому я хочу использовать встроенный.

БД имеет заданную схему (две таблицы) и несколько (очень мало) предопределенных записей. Я ищу простой способ запустить базу данных в памяти, создать таблицы и заполнить данные. Все это должно происходить при инициализации контекста Spring.

Мой подход заключается в использовании H2 в качестве базы данных, а затем, возможно, Spring Batch для загрузки данных из CSV- или XML-файлов. Однако я надеялся, что для этого может быть более простой способ. Существуют ли какие-либо базы данных / фреймворки / инструменты, которые могут сделать это из коробки?

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

Ответы на вопрос(4)

ример: у вас есть скрипт SQL 'start.sql', который содержит все скрипты для инициализации. Это может также включать создание таблиц из файла CSV. Затем используйте URL базы данных в формеjdbc:h2:~/temp/test;init=runscript from '~/temp/start.sql', Start.sql может выглядеть так (это пример, над которым я работаю в любом случае - он показывает, как создавать таблицы из файла CSV):

create table if not exists location(id int primary key, country varchar, 
region varchar, city varchar, postalCode varchar, latitude float, longitude float, 
metroCode varchar, areaCode varchar) 
as select * from csvread('~/Downloads/GeoLiteCity/GeoLiteCity-Location.csv');

create table if not exists blocks(start long, end long primary key, location int) 
as select * from csvread('~/Downloads/GeoLiteCity/GeoLiteCity-Blocks.csv');

create alias if not exists ip2id deterministic as $
long ip2id(String s) {
  String[] x = s.split("\\.");
  return (Long.parseLong(x[0]) << 24) + (Long.parseLong(x[1]) << 16) +
    (Long.parseLong(x[2]) << 8) + Long.parseLong(x[3]);
} $;

create alias if not exists id2ip deterministic as $
String id2ip(long x) {
  return (x >> 24) + "." + ((x >> 16) & 255) + "." + 
      ((x >> 8) & 255) + "." + (x & 255);
} $;

HSQLDB хороший выбор

Решение Вопроса
 martin12 янв. 2011 г., 18:03
Спасибо за чаевые. Интересно, как я это пропустил. Это должно делать именно то, что мне нужно.
 Ralph12 янв. 2011 г., 17:55
+1 за подсказку: я не могу представить себе путь, который был бы более сложным, чем этот.

начиная с 3, с помощьюJDBC: встроенный-базы данных элемент.Прочитайте этот урок для дополнительной информации.

Я также рекомендовал бы использовать Derby, так как он поставляется в комплекте с JDK 6.

Ваш ответ на вопрос