web-dev-qa-db-fra.com

Incorporation par programmation de la base de données Java h2

Pour le moment, nous utilisons HSQLDB comme base de données intégrée, mais nous recherchons une base de données avec moins d'empreinte mémoire à mesure que le volume de données augmente.

Derby/JavaDB n'est pas une option pour le moment car il stocke les propriétés globalement dans les propriétés du système. Nous avons donc pensé à h2 .

Pendant que nous utilisions HSQLDB, nous avons créé un objet serveur, défini les paramètres et démarré. Ceci est décrit ici (et donné comme exemple dans la classe org.hsqldb.test.TestBase).

La question est: cela peut-il être fait de manière analogue à la base de données H2 également? Avez-vous des exemples de code pour cela? En scannant la page h2, je n'ai pas trouvé d'exemple.

30
Georgi

Du téléchargement, je vois que le fichier tutorial.html a ce

import org.h2.tools.Server;
...
// start the TCP Server
Server server = Server.createTcpServer(args).start();
...
// stop the TCP Server
server.stop();
24
anjanb

Oui, vous pouvez exécuter H2 en mode intégré. Vous utilisez simplement le pilote JDBC et vous connectez à une URL intégrée comme celle-ci (leur exemple):

Cette base de données peut être utilisée en mode embarqué ou en mode serveur. Pour l'utiliser en mode embarqué, vous devez:

* Add h2.jar to the classpath
* Use the JDBC driver class: org.h2.Driver
* The database URL jdbc:h2:~/test opens the database 'test' in your user home directory

Exemple de connexion avec JDBC à une base de données H2 intégrée (adapté de http://www.h2database.com/javadoc/org/h2/jdbcx/JdbcDataSource.html ):

import org.h2.jdbcx.JdbcDataSource;
// ...
JdbcDataSource ds = new JdbcDataSource();
ds.setURL("jdbc:h2:˜/test");
ds.setUser("sa");
ds.setPassword("sa");
Connection conn = ds.getConnection();

Si vous cherchez à utiliser H2 en mode purement en mémoire/embarqué, vous pouvez aussi le faire. Voir ce lien pour plus:

Vous avez juste besoin d'utiliser une URL spéciale dans le code JDBC normal comme "jdbc: h2: mem: db1".

70
Alex Miller

Si, pour une raison quelconque, vous avez besoin d'une base de données H2 intégrée en mode serveur, vous pouvez le faire manuellement à l'aide de l'API à http://www.h2database.com/javadoc/org/h2/tools/Server.html = - ou en ajoutant; AUTO_SERVER = TRUE à l'URL de la base de données.

5
javydreamercsw