Spring Загрузочная + IntelliJ + встроенная база данных = головная боль

Либо я пропускаю какую-то концепцию ядра, глубоко погруженную в какую-то документацию (Spring, Spring Boot, H2, HSQLDB, Derby, IntelliJ), или я слишком долго смотрел на это.

У меня есть проект загрузки Spring. Сначала пробовал использовать и инициализировать H2 DB, попытался подключиться к нему в IntelliJ только для того, чтобы понять, что я, возможно, не сможем легко просматривать db, не отказываясь от моего первенца (Подключиться к H2 база данных с использованием клиента базы данных IntelliJ).

Итак, я переехал в DerbyDB. То же самое - папка корня db создается в моем приложении, я подключаюсь к ней в IntelliJ, но мои таблицы, которые только что были созданы из запуска приложения, недоступны для просмотра.

Я даже попробовал SQLite, но поддержка SQLite не так хороша, и некоторые функции обновления недоступны, но я мог бы, по крайней мере, найти мои таблицы в браузере IntelliJ!

Мне просто нужен простой встроенный DB, который я могу использовать, просматривать и играть с легкостью. Любые предложения?!

Когда я запускаю приложение, я вижу, что схема экспортируется:

2015-07-19 09:37:45.836  INFO 98608 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000227: Running hbm2ddl schema export
Hibernate: drop table user_roles if exists
Hibernate: drop table users if exists
Hibernate: create table user_roles (id bigint generated by default as identity, role_name varchar(255), version bigint, user_id bigint, primary key (id))
Hibernate: create table users (id bigint generated by default as identity, email varchar(255), password varchar(255), username varchar(255), version bigint, primary key (id))
Hibernate: alter table user_roles add constraint FK_g1uebn6mqk9qiaw45vnacmyo2 foreign key (user_id) references users
2015-07-19 09:37:45.849  INFO 98608 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete

В IntelliJ ничего (используя удаленный источник jdbc: h2:./test; AUTO_SERVER = TRUE согласно предложению heenenee):

enter image description here

Я вижу, что некоторые голоса закрываются, потому что его непонятно, о чем я спрашиваю:

Как я могу разрабатывать приложения с использованием баз данных H2, HSQLDB или Derby и подключаться к ним с помощью IntelliJ?

Ответ 1

H2 Автоматический смешанный режим должен быть хорошим для вас. Используйте jdbc:h2:~/mydbInHomeDir;AUTO_SERVER=TRUE как ваш spring.datasource.url. В IntelliJ создайте удаленный источник данных H2 и используйте тот же самый JDBC-URL. Возможно, вам придется явно нажать кнопку "Синхронизировать" в окне базы данных IntelliJ, чтобы отобразить таблицы базы данных.

Ответ 2

Если вы выполните действия, описанные в этой статье: http://blog.techdev.de/querying-the-embedded-h2-database-of-a-spring-boot-application/

Я думаю, что он предоставит помощь в получении приложения Spring Boot с базой данных H2 в базе данных, открытой через tcp-сервер, чтобы вы могли использовать клиент базы данных IntelliJ для подключения к нему.

Ответ 3

У меня была аналогичная проблема. Это было связано с дефолтной стратегией create-drop ddl в спящем режиме. После этой стратегии после выключения приложения hibernate уничтожает схему в конце сеанса, поэтому IntelliJ ничего не показывает. Изменение стратегии ddl на create и hibernate создаст схему и уничтожит предыдущие данные при следующем запуске приложения.

Вот пример моей конфигурации:

application.yml

spring:
  datasource.url: jdbc:h2:./db/testDb
  jpa.hibernate.ddl-auto: create

Свойства базы данных IntelliJ

введите описание изображения здесь

Результат

введите описание изображения здесь

Ответ 4

Чтобы добавить к тому, что упомянуто выше heenenee. Если вы не укажете AUTO_SERVER, для вашего экземпляра H2 будет разрешено только одно соединение.

Я использую spring -boot с spring -data-jpa. Убедитесь, что вы указали @Entity для своих объектов, которые представляют каждую таблицу (ы).

Ниже приведена моя application.yml/application.properties

spring.datasource.url: 
jdbc:h2:file:/Users/blah[![enter image description here][1]][1]/db/vlad4;AUTO_SERVER=TRUE
spring.datasource.username: sa
spring.datasource.password:

spring:
  jpa:
    hibernate:
      ddl-auto: create #will create schema based on entities
    show-sql: true

Запустите приложение и импортируйте в него некоторые данные. Spring boot автоматически импортирует ваши данные, если у вас есть import.sql в пути к классам ex:/src/main/resources/import.sql

Настройте IntelliJ так, чтобы введите описание изображения здесь

Если вы не используете IntelliJ, загрузите компилятор сервера/клиента @ http://www.h2database.com/html/download.html извлечь его и запустить клиент на основе браузера, используя:

h2/bin: java -cp h2*.jar org.h2.tools.Server

Подключитесь к своей встроенной базе данных, указав строку подключения: введите описание изображения здесь