web-dev-qa-db-ja.com

jdbc:embedded-databaseを使用したときにSpringが作成するHSQLに接続するにはどうすればよいですか?

Springが自動的に作成するHSQLデータベースがあります。

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

そして今、私はこのデータベースに接続したいと思います。どのアドレスを使用すべきかわからないので、私の質問はこれをどのように行うかです。

9
Slava Semushin

この組み込み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

ユーザー名「SA」とパスワード「」でSpringデータソースを作成する必要があります。 Springデータソースを構成するためのデータベースドライバーとURL(同じマシンから)は次のとおりです。

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

外部データベースを使用することをお勧めしますが、HSQLを使用する場合に備えて、これが役立つ場合があります http://Java.dzone.com/articles/spring-3-makes-use-embedded -簡単

6
emilan

組み込みデータベースはインメモリDBであり、SpringはHSQL、H2、およびDerbyをサポートしています。接続の詳細については、それぞれのサイトにアクセスできます。

H2については、 ここ を参照してください。 HSQLについては、 ここ および ここ を参照してください。

私が理解している限りでは、

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

インメモリDBを使用するため、外部からアクセスすることはできません。同じVMおよび同じクラスローダー内でこれにアクセスできます。

2
Aravind A

あなたはこのようにすることができます

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

一部の人々にとって、十分な解決策は、h2コンソールを使用することです-ここで説明されているように:

スプリングブートのデフォルトのH2 jdbc接続(およびH2コンソール)

必要な場合にのみhsqldbドライバーを設定することを忘れないでください。このように、データベースを個別に起動する必要はありません。また、閲覧するために追加のソフトウェアをインストールする必要はありません。

0
gajos

通常の方法(SQL Developer、SQL Explorerなど)で組み込みデータベースに接続できます。デバッガーを使用して、Springで作成した組み込みデータベースBean(この場合はdataSource)のURLプロパティを確認しました。あなたのURLはjdbc:hsqldb:mem:dataSourceに沿ったものになると思います。

0
Aaron