Поддерживает ли встроенная база данных JSON тип данных?

Я разрабатываю веб-приложение на основе Spring с базой данных postgresql. Я использую JSON Datatype в postgresql. Я настроил объект с пользовательским типом hibernate для поддержки типа данных JSON.

Теперь я хочу протестировать мои объекты DAO с помощью встроенной БД. Есть ли встроенная БД, поддерживающая тип данных JSON, который может использоваться в приложении Spring.

Ответ 1

Когда вы используете специфические функции базы данных - например, поддержку JSON в PostgreSQL, для безопасности вы должны использовать базу данных того же типа для тестирования. В вашем случае вы хотите проверить свои объекты DAO:

  • Предположим, что PostgreSQL установлен на localhost, и убедитесь, что это применимо ко всем средам, в которых выполняются тесты.
  • или даже лучше - попробуйте использовать otj-pg-embedded, который загружает и запускает PostgreSQL для тестов JUnit (я не использовал его в реальных проектах)

Обновить

Если вы можете запустить Docker в своей тестовой среде вместо встроенных баз данных, используйте реальные Postgres через TestContainers.

Ответ 2

@Shaheer вам удалось найти решение для этого? Как вы тестируете JSONB postgres тип со встроенной БД? Я сталкиваюсь с той же проблемой. Мне удалось добавить его в H2, добавив URL источника данных в следующем виде: # spring.datasource.url = jdbc: h2: mem: test; DATABASE_TO_UPPER = false; INIT = создать домен, если JSONB не существует как другой; но я сталкиваюсь с другой проблемой с использованием заглавных букв, поэтому я могу использовать flyway + h2 + spring-jpa в моем тесте. Я пытался также hsqldb, но не могу даже зарегистрировать jsonb как тип.

Любая помощь высоко ценится!