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

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

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

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

Ответы [ 6 ]

18 голосов
/ 16 января 2012

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

Это описано в HSQLDB Guide 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

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

org.hsqldb.jdbcDriver
jdbc:hsqldb:hsql://localhost/test
6 голосов
/ 16 января 2012

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

2 голосов
/ 16 января 2012

Встроенная база данных находится в оперативной памяти, а Spring поддерживает HSQL, H2 и Derby. Вы можете перейти на соответствующий сайт для получения подробной информации о соединении.

Для H2 см. здесь . Для HSQL см. здесь и здесь .

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

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

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

1 голос
/ 07 сентября 2012

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

0 голосов
/ 19 апреля 2016

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

пружинное соединение по умолчанию для подключения H2 jdbc (и консоли H2)

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

0 голосов
/ 31 мая 2012

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

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