démarrage par défaut connexion H2 jdbc H2 (et console H2)

J’essaie simplement de voir le contenu de la firebase database H2 pour une firebase database H2 incorporée que spring-boot crée lorsque je ne spécifie rien dans mon application.properties et que je commence par mvn spring: run. Je peux voir la mise en veille prolongée de JPA en créant les tables, mais si j’essaye d’accéder à la console h2 à l’URL ci-dessous, la firebase database n’a pas de tables.

http://localhost:8080/console/ 

Je vois des suggestions comme celle-ci: Afficher le contenu de la firebase database H2 embarquée démarré par Spring

Mais je ne sais pas où placer le code XML suggéré dans spring-boot et même si je le faisais, je ne veux plus que la h2console soit disponible lorsqu’une firebase database externe est configurée. 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’inclus que H2 lorsqu’un profil Maven est activé).

Quelqu’un at-il un exemple de code montrant comment faire fonctionner la console H2 au démarrage (et aussi comment trouver la chaîne de connexion jdbc utilisée par Spring)?

C’est comme ça que la console H2 a fonctionné au démarrage avec H2. Je ne suis pas sûr que ce soit correct, mais personne n’ayant proposé de solution, je vais suggérer que c’est la meilleure façon de le faire.

Dans mon cas, j’ai choisi un nom spécifique pour la firebase database 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, même si cela semble laisser de côté la plate-forme spring.jpa.database ne fait de mal à rien.

Dans application.properties:

 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 

Dans Application.java (ou une configuration):

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

Ensuite, vous pouvez accéder à la console H2 sur {serveur} / console /. Entrez ceci comme URL JDBC: jdbc: h2: mem: AZ

À partir de Spring Boot 1.3.0.M3 , la console H2 peut être configurée automatiquement.

Les prérequirejs sont:

  • Vous développez une application web
  • Spring Boot Dev Tools sont activés
  • H2 est sur le chemin de classe

Même si vous n’utilisez pas les outils de développement Spring Boot, vous pouvez toujours configurer automatiquement la console en définissant spring.h2.console.enabled sur true

Consultez cette partie de la documentation pour tous les détails.

Notez que lors de la configuration de cette manière, la console est accessible à l’ adresse suivante: http: // localhost: 8080 / h2-console /

J’ai trouvé un bon tutoriel sur ce sujet:

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

Fondamentalement, l’URL JDBC correcte pour moi était: jdbc:h2:mem:testdb

Une réponse similaire avec le guide étape par étape.

  1. Ajouter une dépendance aux outils Developer à votre pom.xml ou build.gradle

Maven

   org.springframework.boot spring-boot-devtools true   

Gradle

 dependencies { comstack("org.springframework.boot:spring-boot-devtools") } 
  1. Accédez à la firebase database depuis http://localhost:8080/h2-console/
  2. Spécifiez jdbc:h2:mem:testdb comme URL JDBC
  3. Vous devriez voir l’entité que vous avez spécifiée dans votre projet en tant que table.

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

H2 Web Console (H2ConsoleProperties):

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

L’ajout des deux lignes ci-dessus à mon fichier application.properties était suffisant pour accéder à la console Web de la firebase database H2, en utilisant le nom d’utilisateur (sa) et le mot de passe (vide) par défaut.

Je n’avais que les propriétés ci-dessous dans /resources/application.properties. Après avoir exécuté le démarrage du spring, en utilisant cette URL ( http: // localhost: 8080 / h2-console / ), la table dans la console H2 était visible et lue pour afficher les données de la table. Vous pouvez également exécuter des commandes SQL simples. Une chose, dans votre code Java, lors de l’extraction des données, les noms de colonnes sont en majuscules, même si schema.sql utilise des noms minuscules 🙂

 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 

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

Si vous n’utilisez pas les outils de développement de Spring Boot, vous pouvez activer la console dans application.properties aide de spring.h2.console.enabled=true . Cela activera la console sous /h2-console . Si vous souhaitez modifier l’URL, vous pouvez append une autre entrée avec spring.h2.console.path=my_console_path .

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

Plus de détails dans la documentation de Spring Boot .

Pour obtenir les tables, il suffit de créer 2 fichiers SQL, schema.sql (pour la création de la table) et data.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 rest pendant l’exécution.

Si vous utilisez plus de 2 bases de données dans votre projet, veillez à utiliser des fichiers spécifiques tels que (schéma-h2.sql – pour la firebase database h2, schema-oracle.sql – pour la firebase database oracle). La même chose à suivre pour data.sql aussi.

Assurez-vous également de supprimer les tables en ajoutant la déclaration drop table dans votre schéma.sql en tant que première instruction. Pour éviter d’append des enregistrements en double.

Le lien pour le démarrage du spring est ici.

Mon application.properties est la suivante.

 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 du lien ci-dessous.

https://springframework.guru/using-the-h2-database-console-in-spring-boot-with-spring-security/

J’ai constaté qu’avec Spring Boot 2.0.2.RELEASE, la configuration de spring-boot-starter-data-jpa et de com.h2database dans le fichier POM ne suffisait pas à faire fonctionner la console H2. Vous devez configurer spring-boot-devtools comme ci-dessous. Vous pouvez éventuellement suivre les instructions d’Aaron Zeckoski dans cet article.

   org.springframework.boot spring-boot-devtools true  

Utilisez jdbc: h2: mem: testdb comme chemin d’access lorsque vous vous connectez à la console H2.

Évidemment, si vous avez modifié les propriétés de Spring Boot, 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 ce qu’on peut en dire! Vous verrez votre schéma après vous être connecté à H2.