2012-01-16 16 views
9

Ho un database HSQL, che crea automaticamente Primavera per me:Come connettersi a HSQL che Spring crea quando jdbc: viene usato il database incorporato?

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

E ora voglio per connettersi a questo database. La mia domanda è come farlo, perché non so quale indirizzo dovrei usare.

+1

Cosa intendi per "connettersi a"? Vuoi usarlo nel tuo bean di primavera o vuoi collegarti con un browser di database esterno? –

+0

@ peter-gwiazda Voglio dire come collegarlo ad un browser di database esterno. –

+0

Eseguire HSQLDB in modalità server. Puoi anche controllare il database H2. –

risposta

17

Questo database HSQL incorporato è tutto in memoria e in-process, quindi accessibile solo dal processo Spring Java. Se si desidera accedere al database anche da un altro strumento, ad esempio per controllare il contenuto con un gestore database, è possibile avviare un server HSQLDB con un'istanza all-in-memory, quindi connettersi al server da Spring e altri strumenti.

Questo è trattato nel HSQLDB Guida http://hsqldb.org/doc/2.0/guide/listeners-chapt.html

Il server viene avviato con questo comando:

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

È necessario creare una fonte di dati sorgente con il nome utente "SA" e la password "". Il driver del database e l'URL (dalla stessa macchina) per configurare l'origine dati primavera sono:

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

Quando eseguo 'java -cp ~/.m2/repository/org/hsqldb/hsqldb/2.0.0/hsqldb-2.0.0.jar org.hsqldb.util.DatabaseManagerSwing' e usare 'jdbc: hsqldb: hsql: // localhost/test' Ho errore:' java.sql.SQLTransientConnectionException: java.net.ConnextException: Connessione rifiutata' –

+0

java -cp ../lib/hsqldb.jar org .hsqldb.Server ... è in esecuzione senza errori? –

+0

@ peter-gwiazda Quando eseguo il server manualmente, posso collegarmi ad esso con il comando fornito. Ma nel mio caso, Spring avvia il server, quindi chiedo come connettersi a HSQL che è gestito da Spring .. –

6

Vi consiglio di utilizzare database esterno, ma solo nel caso in cui, se si desidera utilizzare HSQL, allora questo può vi aiuterà a http://java.dzone.com/articles/spring-3-makes-use-embedded-easy

+0

+1, inoltre l'annotazione transazionale per i test di integrazione di ContextConfiguration eseguirà il rollback per impostazione predefinita, rendendo lo sviluppo db sicuro e coerente dopo il test. – Aubergine

2

database embedded è una memoria DB e supporta Primavera HSQL, H2, e Derby. Potresti andare al loro rispettivo sito per i dettagli della connessione.

Per H2 vedere here. Per HSQL vedere here e here.

Per quanto ho capito, il

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

utilizza un DB in memoria e quindi non è accessibile dall'esterno. Sarai in grado di accedervi all'interno della stessa VM e dello stesso caricatore di classi.

+0

Possiamo usare il file XML da caricare nel DB – VinayVeluri

0

si può fare in questo modo

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

Sarebbe ancora meglio se spiegassi il codice che hai postato. –

1

È possibile connettersi al database incorporato nel modo normale, (Sviluppatore SQL, SQL Explorer, ecc.); Ho usato il mio debugger per esaminare la proprietà URL nel bean di database incorporato che ho creato con Spring, nel tuo caso dataSource. Penserei che il tuo url sarebbe qualcosa sulla falsariga di jdbc:hsqldb:mem:dataSource.

+0

Non funzionerà sicuramente perché il database in memoria è disponibile solo all'interno di un processo JVM. –

0

Per alcune persone una soluzione sufficiente sarebbe quella di utilizzare la console h2 - come descritto qui:

spring boot default H2 jdbc connection (and H2 console)

Devi solo ricordare di impostare i conducenti HSQLDB dove necessario. In questo modo il database non deve essere avviato separatamente. Inoltre, non è necessario installare alcun software aggiuntivo per sfogliarlo.

Problemi correlati