#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 в моем коде. Фух, тогда это кажется легким переходом.