Spring Boot: проект MyBatis автоматически создает таблицы данных через JPA

Spring Boot Hibernate MyBatis
Spring Boot: проект MyBatis автоматически создает таблицы данных через JPA

MyBatis — очень хорошая структура базы данных, более гибкая, чем Hibernate. Для небольшого приложения у MyBatis есть очень болезненная проблема, то есть оно не может автоматически создавать и обновлять таблицы данных.

Автоматически создавать таблицы с помощью Hibernate

Сегодня мы обсудим схему автоматического создания таблиц, которая заключается в том, чтобы ввести Hibernate и использовать Hibernate только для автоматического создания атрибутов таблицы.

  1. импортировать зависимости
compile("org.springframework.boot:spring-boot-starter-data-jpa")
  1. Исправлятьresources/application.propertiesнастроить
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

вspring.jpa.hibernate.naming.physical-strategyЭто изменение стратегии именования сгенерированных таблиц и атрибутов.По умолчанию используется автоматическое преобразование в нижний регистр и подчеркивание.versionCodeэто становитсяversion_code, на самом деле эта стратегия именования лучше. Но иногда мы можем предпочесть иметь то же имя атрибута и имя базы данных, чтобы таблицы и атрибуты, сгенерированные после добавления этой конфигурации, соответствовали классам Java.

  1. Добавьте аннотации к классу Bean
@Entity
class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(unique = true, nullable = false)
    var id: Int? = null

    @Column(length = 32)
    var name: String? = null

    @Column(length = 32, unique = true, nullable = true)
    private var username: String? = null
    @Column(length = 32)
    private var password: String? = null

    @Temporal(TemporalType.TIMESTAMP)
    var created: Date? = null
}
  1. Стартовый проект
    После запуска проекта проверьте базу данных с помощью инструмента базы данных, и вы обнаружите, что пользовательская таблица создается автоматически.
#日志
Hibernate: create table user (id integer not null auto_increment, created datetime, name varchar(32), password varchar(32), username varchar(32), primary key (id)) engine=MyISAM
Hibernate: alter table user drop index UK_7vaiuu0nyrnryow6o08dk6o6t
Hibernate: alter table user add constraint UK_7vaiuu0nyrnryow6o08dk6o6t unique (username)
image.png

Улучшать

Когда мы введем Hibernate и упакуем его в Jar, мы обнаружим, что размер пакета составляет 10 МБ, а скорость запуска также замедлена, что не очень хорошо! Или мы можем сделать некоторые оптимизации, такие как использование Hibernate только в среде модульного тестирования, выполнение модульного теста каждый раз при изменении класса компонента и автоматическое обновление таблицы.

  1. Изменить конфигурацию зависимости
    Измените приведенный выше компилятор на testCompile.Поскольку класс bean-компонента использует код аннотаций, пакет аннотаций все же должен быть введен.Количество кода в этой части невелико и не повлияет на размер.
testCompile("org.springframework.boot:spring-boot-starter-data-jpa")
compile 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final'
  1. Написать код модульного теста
@RunWith(SpringRunner::class)
@SpringBootTest
class JpaTest {
    @Test
    fun test() {

    }
}

Запустите модульные тесты, duangduang! ! ! Нужная нам пользовательская таблица создана

#日志
Hibernate: create table user (id integer not null auto_increment, created datetime, name varchar(32), password varchar(32), username varchar(32), primary key (id)) engine=MyISAM
Hibernate: alter table user drop index UK_7vaiuu0nyrnryow6o08dk6o6t
Hibernate: alter table user add constraint UK_7vaiuu0nyrnryow6o08dk6o6t unique (username)

Суммировать

Если вам нужно обновить базу данных удаленного сервера, вы можете напрямую полагаться на Hibernate. Если вы не хотите, чтобы пакет стал больше, подключитесь к удаленной базе данных локально и обновите ее в среде модульного тестирования.