web-dev-qa-db-fra.com

Où les bases de données intégrées de H2 stockent-elles les données?

J'ai donc récemment commencé à apprendre comment les bases de données fonctionnent, comment utiliser SQL ect. et a décidé de commencer à implémenter une base de données intégrée dans mon application Java (en particulier la base de données H2) et a semblé fonctionner assez bien sur l'ordinateur sur lequel je codais.

Quand je suis passé sur un autre ordinateur pour continuer mon codage, j'ai remarqué que même si je portais le fichier de base de données intégré (h2 - *. Jar), ​​toutes les tables préparées que j'ai créées sur le premier ordinateur n'existent pas sur le second. J'avais en quelque sorte l'idée reçue que les données réelles générées par le moteur de base de données sont également stockées dans le fichier de base de données incorporé.

Ma question est donc la suivante: où les données de la base de données sont-elles réellement stockées? Est-il possible de préparer une base de données contenant déjà des milliers d'enregistrements et de la distribuer avec l'application réelle? 

Je devrais également mentionner que la façon dont je me connectais à la base de données sur le premier ordinateur passait par une connexion JDBC, c’est-à-dire l’URL: JDBC: h2: ~/test et lorsque j’essayais de me connecter à cette base de données sur le deuxième ordinateur, il n’existait pas.

Merci!

41
Sammy Guergachi

Lire le FAQ :

Où sont stockés les fichiers de base de données?

Lorsque vous utilisez des URL de base de données telles que jdbc:h2:~/test, la base de données est stockée dans le répertoire de l'utilisateur. Pour Windows, il s'agit généralement de C:\Documents and Settings\<userName> ou C:\Users\<userName>. Si le répertoire de base n'est pas défini (comme dans jdbc:h2:./test), les fichiers de base de données sont stockés dans le répertoire de démarrage de l'application (le répertoire de travail actuel). Lorsque vous utilisez l'application H2 Console à partir du menu Démarrer, il s'agit de <Installation Directory>/bin. Le répertoire de base peut être défini dans l'URL de la base de données. Un chemin fixe ou relatif peut être utilisé. Lorsque vous utilisez l'URL jdbc:h2:file:./data/sample, la base de données est stockée dans les données du répertoire (par rapport au répertoire de travail en cours). Le répertoire est créé automatiquement s'il n'existe pas encore. Il est également possible d'utiliser le nom de répertoire complet (et pour Windows, le nom du lecteur). Exemple: jdbc:h2:file:C:/data/test

74
The Nail

Le h2-*.jar est simplement un moteur (le code) de la base de données. Il est en lecture seule et ne stocke aucune information. Les données de H2 peuvent être stockées en mémoire ou sur disque dans un fichier spécifié. En fait, vous en spécifiez un:

JDBC:h2:~/test/

Vous trouverez votre base de données dans votre répertoire personnel sous le sous-répertoire test. Copiez simplement ces fichiers dans un répertoire personnel d'un autre ordinateur et H2 les trouvera tant qu'il utilise la même URL.

11
Tomasz Nurkiewicz

Dans Windows, vous devez définir l'URL JDBC avec cette valeur:

JDBC URL: jdbc:h2:mem:testdb
0
Sebastian Farias