Как подключиться к HSQL, который Spring создает при использовании jdbc:embedded-database?

У меня есть база данных HSQL, которая Spring автоматически создает для меня:

<jdbc:embedded-database id="dataSource" type="HSQL">
    <jdbc:script location="classpath:scheme.sql" /
</jdbc:embedded-database>

и теперь я хочу подключиться к этой базе данных. Мой вопрос в том, как это сделать, потому что я не знаю, какой адрес я должен использовать.

6 ответов


эта встроенная база данных HSQL-это все в памяти и в процессе, поэтому доступна только из процесса Spring Java. Если вы хотите получить доступ к базе данных из другого инструмента, например, чтобы проверить содержимое с помощью менеджера баз данных, вы можете запустить сервер HSQLDB с экземпляром all-in-memory, а затем подключиться к серверу из Spring и других инструментов.

это описано в руководстве HSQLDB http://hsqldb.org/doc/2.0/guide/listeners-chapt.html

сервер запускается с помощью следующей команды:

java -cp ../lib/hsqldb.jar org.hsqldb.Server --database.0 mem:test --dbname.0 test

нужно создать источник данных с именем пользователя "SA" и пароль "". Драйвер базы данных и URL-адрес (с той же машины) для настройки источника данных Spring:

org.hsqldb.jdbcDriver
jdbc:hsqldb:hsql://localhost/test

Я рекомендую вам использовать внешнюю базу данных, но на всякий случай, если вы хотите использовать HSQL, то это может вам помочьhttp://java.dzone.com/articles/spring-3-makes-use-embedded-easy


Embedded-database-это БД памяти, а Spring поддерживает HSQL, H2 и Derby . Вы можете перейти на их соответствующий сайт для деталей подключения .

Н2 см. здесь . Для HSQL в данном случае является см. здесь и здесь.

насколько я понимаю,

<jdbc:embedded-database id="dataSource" type="HSQL">
  <jdbc:script location="classpath:scheme.sql" /
</jdbc:embedded-database>

использует БД в памяти и поэтому недоступен извне . Вы сможете получить доступ к этому в той же виртуальной машине и в том же загрузчике классов .


вы можете подключиться к встроенной базе данных обычным способом (SQL Developer, SQL Explorer и т. д.); Я использовал свой отладчик для просмотра свойства URL во встроенном компоненте базы данных, который я создал с Spring, в вашем случае dataSource. Я бы подумал, что Ваш url-адрес будет чем-то вроде jdbc:hsqldb:mem:dataSource.


вы можете сделать такой

final ApplicationContext ctx = new ClassPathXmlApplicationContext("dao-context.xml");
final DataSource dataSource = (DataSource)ctx.getBean("dataSource");
final Connection conn = dataSource.getConnection();

для некоторых людей достаточным решением было бы использовать консоль h2 - как описано здесь:

spring boot по умолчанию соединение H2 jdbc (и консоль H2)

вы должны только помнить, чтобы установить драйверы hsqldb, где это необходимо. Таким образом, база данных не должна запускаться отдельно. Вам также не нужно устанавливать дополнительное программное обеспечение для его просмотра.