@Entity
: Определяет класс как сущность для ORM, и предоставленное имя может использоваться в специальных запросах ORM (JPQL, HSQL).
@Table
: Это будет сопоставлено с одной таблицей в базе данных. Поэтому, если вы пишете какие-либо собственные запросы, вы можете использовать это имя таблицы. (Это точка входа для ORM)
Обратите внимание, что вы можете сохранить разные атрибуты имени для любой аннотации. Об отображении и преобразовании из одного в другое заботится каркас.
Чтобы запросить Spring о создании таблиц от вашего имени, вы можете указать некоторые свойства в файле application.yml (или файле свойств),См. Ниже:
spring:
datasource:
url: jdbc:h2:file:./test_db;DB_CLOSE_ON_EXIT=FALSE;IFEXISTS=FALSE;DB_CLOSE_DELAY=-1
driverClassName: org.h2.Driver
username: sa
password:
validationQuery: SELECT 1
jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: create
// If you want to view the tables in console
h2:
console:
enabled: true
path: /h2-console
Помимо этого существует множество других свойств, которые могут быть указаны. Например:
spring:
jpa:
hibernate:
naming:
physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
properties:
hibernate.format_sql: true
generate-ddl: true
show-sql: true
Взгляните на документы здесь и некоторые примеры настройки H2 с помощью Spring Boot.
Также см. База данных инициализация в Spring Boot.
Вы можете использовать Flyway для переноса базы данныхкак и в производстве , не рекомендуется создавать схему с помощью этих свойств.