connexion JDBC H2 par défaut (et console H2))

j'essaie simplement de voir le contenu de la base de données H2 pour une base de données H2 intégrée que spring-boot crée quand je ne spécifie rien dans mon application.propriétés et de commencer avec mvn printemps:courir. Je peux voir hibernate JPA créer les tables mais si j'essaie d'accéder à la console h2 à L'URL ci-dessous la base de données n'a pas de tables.

http://localhost:8080/console/

je vois des suggestions comme celle-ci: Afficher le contenu de l'embedded H2 base de données a démarré par le Printemps

mais je ne sais pas où mettre le XML suggéré dans spring-boot et même si je l'ai fait, je ne veux pas que le h2console soit disponible quand une base de données externe est configurée de sorte qu'il est plus probable que j'ai besoin de gérer cela avec une sorte de code conditionnel (ou peut-être juste permettre à spring de le gérer automatiquement dans le cas le plus idéal où je n'inclue H2 que lorsqu'un profil maven est activé).

est-ce que quelqu'un a un exemple de code montrant comment faire fonctionner la console H2 au démarrage (et aussi trouver quelle est la chaîne de connexion jdbc que spring utilise)?

73
demandé sur Community 2014-07-09 17:57:18

10 réponses

C'est comme ça que j'ai fait fonctionner la console H2 avec H2. Je ne suis pas sûr si cela est juste, mais puisque personne n'a proposé une solution, alors je vais proposer, c'est la meilleure façon de le faire.

dans mon cas, j'ai choisi un nom spécifique pour la base de données afin d'avoir quelque chose à saisir lors du démarrage de la console H2 (dans ce cas,"AZ"). Je pense que tout cela est nécessaire, bien que cela semble comme l'abandon du printemps.jpa.base de données-la plate-forme ne fait pas de mal quoi.

en application.propriétés:

spring.datasource.url=jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

En Application.java (ou une configuration):

@Bean
public ServletRegistrationBean h2servletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet());
    registration.addUrlMappings("/console/*");
    return registration;
}

alors vous pouvez accéder à la console H2 à {server}/console/. Entrez ceci comme L'URL JDBC: JDBC: h2:mem: az

84
répondu Aaron Zeckoski 2014-07-13 22:57:31

à partir du démarrage à ressort 1.3.0.M3 , la console H2 peut être auto-configurée.

les conditions préalables sont:

  • vous développez une application web
  • les outils de développement de Botte à ressort sont activés
  • H2 est sur le chemin de classe

même si vous n'utilisez pas les outils Spring Boot Dev, vous pouvez toujours auto-configurer la console en paramétrant spring.h2.console.enabled à true

Check out ce une partie de la documentation pour tous les détails.

notez que lors de cette configuration la console est accessible à: http://localhost:8080/h2-console /

41
répondu geoand 2018-01-28 11:21:30

j'ai trouvé un joli tutoriel à propos de ce thème:

https://springframework.guru/utiliser-les-h2-base de données-console-au-printemps-boot-avec-printemps-la sécurité/

fondamentalement, L'URL correcte de JDBC pour moi était: jdbc:h2:mem:testdb

37
répondu Krzysztof Kaczor 2015-08-09 14:22:08

une réponse similaire avec un guide étape par étape.

  1. Ajouter outils de développement dépendance à votre pom.xml ou build.gradle

Maven

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradle

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}
  1. accéder au db à partir de http://localhost:8080/h2-console/
  2. spécifie jdbc:h2:mem:testdb comme URL JDBC
  3. Vous devriez voir l'entité que vous avez spécifié dans votre projet comme un tableau.
14
répondu biniam_Ethiopia 2016-10-12 04:53:18

de http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

H2 Console Web (H2ConsoleProperties):

spring.h2.console.enabled=true //Enable the console.
spring.h2.console.path=/h2-console //Path at which the console will be available.

Ajouter les deux lignes ci-dessus à ma demande.le fichier properties était suffisant pour accéder à la console web de la base de données H2, en utilisant le nom d'utilisateur (sa) par défaut et le mot de passe (vide).

14
répondu mancini0 2017-04-06 18:12:17

j'avais seulement sous Propriétés dans /ressources/application.propriété. Après avoir lancé le démarrage du ressort, en utilisant cette URL ( http://localhost:8080/h2-console / ), la table dans la console H2 était visible et lu pour voir les données de la table, aussi vous pouvez exécuter des commandes SQL simples. Une chose, dans votre code java, tout en récupérant des données, les noms de colonne sont majuscules, même si schema.sql utilise des noms de cas inférieurs:)

spring.datasource.initialize=true
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=- 1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
13
répondu rak22 2016-05-01 19:04:51

si vous utilisez les outils de développement de Spring Boot, il est fourni avec la Console H2 activée par défaut. Il est accessible à partir de /h2-console /. Sur l'interface de connexion, pour l'entrée JDBC URL utiliser la valeur jdbc:h2:mem:testdb . Faites attention à la chaîne mem .

si vous n'utilisez pas les outils de développement de la botte de printemps, vous pouvez activer la console dans application.properties en utilisant spring.h2.console.enabled=true . Cela activera la console sous /h2-console . Si vous voulez changer L'URL alors vous pouvez ajouter un autre entrée spring.h2.console.path=my_console_path .

le nom de schéma par défaut est testdb .

plus de détails dans documentation de démarrage à ressort .

7
répondu georger 2017-04-05 20:47:43

pour obtenir les tables tout ce que vous devez faire est de créer 2 fichiers sql schema.sql (pour la création de table) et les données.sql (données pour les tables créées). Ces fichiers doivent être placés dans le dossier src/main/resources. Spring boot auto les détecte et s'occupe du reste pendant l'exécution.

si vous utilisez plus de 2 DB dans votre projet, assurez-vous d'utiliser des fichiers spécifiques comme (schema-h2.sql -- pour h2 DB , schéma oracle.sql -- pour oracle DB). Même à suivre pour les données.sql trop.

également s'assurer que vous déposez des tables en ajoutant l'énoncé de table de goutte dans votre schéma.sql comme première déclaration. Pour éviter d'annexer des enregistrements en double.

le lien pour la botte de printemps est ici.

ma demande.propriétés est comme suit.

spring.datasource.url=jdbc:h2:~/file/Shiva;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.platform=h2
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.datasource.initialize=true 
spring.error.whitelabel.enabled=true
spring.h2.console.path=/console
spring.jpa.hibernate.ddl-auto=none
spring.datasource.continue-on-error=true
spring.jpa.hibernate.ddl-auto=create
spring.hibernate.hbm2ddl.auto=update
spring.hibernate.show_sql=true

vous pouvez suivre les étapes dans le lien ci-dessous.

https://springframework.guru/utiliser-les-h2-base de données-console-au-printemps-boot-avec-printemps-la sécurité/

4
répondu kemparaj565 2016-11-05 23:54:25

j'ai trouvé qu'avec une botte à ressort 2.0.2.La LIBÉRATION, la configuration de spring-boot-starter-data-jpa et com.h2database dans le fichier POM n'est pas suffisant pour que la console H2 fonctionne. Vous devez configurer spring-boot-devtools comme ci-dessous. Vous pouvez également suivre les instructions de Aaron Zeckoski dans ce post

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
 </dependency>
0
répondu Pragnesh Rana 2018-05-15 20:19:42

utilisez jdbc:h2:mem: testdb comme chemin d'accès lors de la connexion à la console H2.

évidemment, si vous avez modifié les propriétés de la botte de printemps, Votre source de données peut être différente, mais il semble que vous ayez du mal à trouver la valeur par défaut. C'est tout là est à lui! Vous verrez votre schéma après vous être connecté à H2.

0
répondu 2018-08-31 20:09:50