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
Подключитесь к своей встроенной базе данных, указав строку подключения:
![введите описание изображения здесь]()