Slava Semushin
Slava Semushin

Reputation: 15214

How to connect to HSQL which Spring creates when jdbc:embedded-database is used?

I have a HSQL database which Spring automatically creates for me:

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

And now I want to connect to this database. My question is how to do this, because I don't known which address I should use.

Upvotes: 11

Views: 36755

Answers (6)

gajos
gajos

Reputation: 907

For some people a sufficient solution would be to use the h2 console - as described here:

spring boot default H2 jdbc connection (and H2 console)

You must only remember to set hsqldb drivers where needed. This way the database doesn't have to be started separately. You also don't have to install any additional software to browse it.

Upvotes: 0

Aaron
Aaron

Reputation: 125

You can connect to the embedded database in the normal fashion, (SQL Developer, SQL Explorer etc); I used my debugger to look at the URL property in the embedded database bean I created with Spring, in your case dataSource. I would think your url would be something along the lines of jdbc:hsqldb:mem:dataSource.

Upvotes: 0

Tanmay Saha
Tanmay Saha

Reputation: 1

you can do like this

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

Upvotes: -1

Aravind A
Aravind A

Reputation: 9707

Embedded-database is an in memory DB and Spring supports HSQL, H2, and Derby . You could go to their respective site for the connection details .

For H2 see here . For HSQL see here and here.

As far as I understand , the

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

uses an in-memory DB and so is not accessible externally . You'll be able to access this within the same VM and same class loader .

Upvotes: 2

fredt
fredt

Reputation: 24372

This embedded HSQL database is all-in-memory and in-process, therefore accessible only from the Spring Java process. If you want to access the database from another tool as well, for example to check the contents with a database manager, you can start an HSQLDB server with an all-in-memory instance, then connect to the server from Spring and other tools.

This is covered in the HSQLDB Guide http://hsqldb.org/doc/2.0/guide/listeners-chapt.html

The server is started with this command:

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

You need to create a Spring data source with username "SA" and password "". The database driver and URL (from the same machine) to configure the Spring data source are:

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

Upvotes: 20

emilan
emilan

Reputation: 13075

I recomend you to use external Database, but just in case if you want to use HSQL, then this may will help you http://java.dzone.com/articles/spring-3-makes-use-embedded-easy

Upvotes: 7

Related Questions