如何连接到Spring使用jdbc:embedded-database时创建的HSQL?

时间:2012-01-16 11:54:22

标签: spring hsqldb

我有一个Spring自动为我创建的HSQL数据库:

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

现在我想连接到这个数据库。我的问题是如何做到这一点,因为我不知道应该使用哪个地址。

6 个答案:

答案 0 :(得分:18)

这个嵌入式HSQL数据库是全内存和进程内的,因此只能从Spring Java进程访问。如果您还想从其他工具访问数据库,例如使用数据库管理器检查内容,您可以启动具有全内存实例的HSQLDB服务器,然后从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

您需要使用用户名&#34; SA&#34;创建一个Spring数据源。和密码&#34;&#34;。用于配置Spring数据源的数据库驱动程序和URL(来自同一台机器)是:

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

答案 1 :(得分:6)

我建议您使用外部数据库,但是如果您想使用HSQL,那么这可能会对您有所帮助http://java.dzone.com/articles/spring-3-makes-use-embedded-easy

答案 2 :(得分:2)

嵌入式数据库是内存数据库,Spring支持HSQL,H2和Derby。您可以访问各自的站点以获取连接详细信息。

对于H2,请参阅here。 对于HSQL,请参阅herehere

据我了解,

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

使用内存数据库,因此无法从外部访问。您将能够在同一个VM和相同的类加载器中访问它。

答案 3 :(得分:1)

您可以以正常方式连接到嵌入式数据库,(SQL Developer,SQL Explorer等);我使用我的调试器来查看我使用Spring创建的嵌入式数据库bean中的URL属性,在您的情况下是dataSource。我认为你的网址会像jdbc:hsqldb:mem:dataSource一样。

答案 4 :(得分:0)

你可以这样做

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

答案 5 :(得分:0)

对于某些人来说,一个充分的解决方案是使用h2控制台 - 如下所述:

spring boot default H2 jdbc connection (and H2 console)

您必须记住在需要的地方设置hsqldb驱动程序。这样,数据库不必单独启动。您也不必安装任何其他软件来浏览它。