Приведет ли преобразование моей базы данных памяти H2 в базу данных SQL к нарушению какой-либо реальной логики в моем проекте? Весенняя загрузка

#sql #spring #database #spring-boot #h2

#sql #весна #База данных #весенняя загрузка #h2

Вопрос:

В настоящее время я использую базу данных памяти H2 для своего веб-сайта. Пока все работает, но для прогресса мой учитель сказал перейти с базы данных h2 на SQL, поскольку она сбрасывается при каждом перезапуске программы. Мне было интересно, если я перейду, это испортит какую-либо мою логику / код. Я знаю, что мне пришлось бы создать класс соединителя базы данных, но мне было просто любопытно, придется ли мне редактировать большую часть кода, чтобы информация могла быть помещена в базу данных.

Ответ №1:

Это зависит от того, какой «вид» «sql code» у вас есть. Если вы используете Hibernate (например, через spring-data-jpa ), и вы использовали только аннотации и никогда не использовали @Query("some custom SQL code") , то вы, скорее всего, в безопасности, поскольку Hibernate знает, как переводить аннотации java в соответствующую базу данных по вашему выбору (h2, postgres, что у вас есть).

Однако, если вы использовали пользовательские запросы, то эти пользовательские запросы могут начать прерываться, в зависимости от выбранного вами поставщика. Например, если у вас есть SELECT TOP 10 * FROM users , это, вероятно, сработало бы для Microsoft SQL Server, но может не сработать для Postgres.

Комментарии:

1. Спасибо за быстрый ответ! Я не использовал аннотации @query для вставки в базу данных. Это простой веб-сайт Spring Boot, где у меня есть репозиторий, который обрабатывает CRUD, контроллер и jsp.

2. Тогда все будет в порядке. Вам нужно беспокоиться только тогда, когда вы начнете писать код SQL, специфичный для данного поставщика (например, синтаксис SQL, который не поддерживается другими). Существует «стандарт», называемый ANSI-SQL, который определяет ряд правил, которые каждый ДОЛЖЕН соблюдать (не то, что они делают), и, кроме этого «стандарта», все отличается от поставщика к поставщику (за этим не следит полиция :)). Например. — взглянитев IF синтаксисе у разных поставщиков.

Ответ №2:

Если вы используете какие-либо формы ORM-фреймворков, таких как Hibernate, MyBatis и т. Д., И если вы не зависите от каких-либо собственных запросов, процедур, функций и т. Д. Базы данных H2. Все будет в порядке.

Комментарии:

1. Спасибо за быстрый ответ @Shazin! Я использую Hibernate, и у меня нет никаких аннотаций @Queries в моем коде. Фух, тогда это кажется легким переходом.