Spring Boot - Cơ sở dữ liệu Flyway

Flyway là một ứng dụng kiểm soát phiên bản để phát triển lược đồ Cơ sở dữ liệu của bạn một cách dễ dàng và đáng tin cậy trên tất cả các phiên bản của bạn. Để tìm hiểu thêm về Flyway, bạn có thể sử dụng liên kết - www.flywaydb.org

Nhiều dự án phần mềm sử dụng cơ sở dữ liệu quan hệ. Điều này yêu cầu xử lý di chuyển cơ sở dữ liệu, còn thường được gọi là di chuyển lược đồ.

Trong chương này, bạn sẽ tìm hiểu chi tiết về cách cấu hình cơ sở dữ liệu Flyway trong ứng dụng Spring Boot của bạn.

Cấu hình cơ sở dữ liệu Flyway

Đầu tiên, tải xuống dự án Spring Boot từ trang Spring Initializer www.start.spring.io và chọn các phần phụ thuộc sau:

  • Web khởi động mùa xuân
  • Flyway
  • MySQL
  • JDBC

Người dùng Maven có thể thêm các phần phụ thuộc sau vào tệp pom.xml.

<dependency>
   <groupId>org.flywaydb</groupId>
   <artifactId>flyway-core</artifactId>
</dependency>

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
</dependency>

Người dùng Gradle có thể thêm các phần phụ thuộc sau vào tệp build.gradle.

compile('org.flywaydb:flyway-core')
compile('org.springframework.boot:spring-boot-starter-jdbc')
compile('org.springframework.boot:spring-boot-starter-web')
compile('mysql:mysql-connector-java')

Trong thuộc tính ứng dụng, chúng ta cần định cấu hình các thuộc tính cơ sở dữ liệu để tạo Nguồn dữ liệu và cũng như các thuộc tính đường bay mà chúng ta cần cấu hình trong thuộc tính ứng dụng.

Đối với người dùng tệp thuộc tính, hãy thêm các thuộc tính dưới đây vào tệp application.properties.

spring.application.name = flywayapp  

spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/USERSERVICE?autoreconnect=true
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.testOnBorrow = true
spring.datasource.testWhileIdle = true
spring.datasource.timeBetweenEvictionRunsMillis = 60000
spring.datasource.minEvictableIdleTimeMillis = 30000
spring.datasource.validationQuery = SELECT 1
spring.datasource.max-active = 15
spring.datasource.max-idle = 10
spring.datasource.max-wait = 8000

flyway.url = jdbc:mysql://localhost:3306/mysql
flyway.schemas = USERSERVICE
flyway.user = root
flyway.password = root

Người dùng YAML có thể thêm các thuộc tính sau trong tệp application.yml.

spring:
   application:
      name: flywayapp  
   datasource: 
      driverClassName: com.mysql.jdbc.Driver
      url: "jdbc:mysql://localhost:3306/USERSERVICE?autoreconnect=true"
      password: "root"
      username: "root"
      testOnBorrow: true
      testWhileIdle: true
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 30000
      validationQuery: SELECT 1
      max-active: 15
      max-idle: 10
      max-wait: 8000
flyway:
   url: jdbc:mysql://localhost:3306/mysql
   schemas: USERSERVICE
   user: "root"
   password: "root"

Bây giờ, hãy tạo một tệp SQL trong src/main/resources/db/migrationdanh mục. Đặt tên tệp SQL là “V1__Initial.sql”

CREATE TABLE USERS (ID INT AUTO_INCREMENT PRIMARY KEY, USERID VARCHAR(45));
INSERT INTO USERS (ID, USERID) VALUES (1, 'tutorialspoint.com');

Mã tệp lớp ứng dụng Spring Boot chính được cung cấp bên dưới:

package com.tutorialspoint.flywayapp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FlywayappApplication {
   public static void main(String[] args) {
      SpringApplication.run(FlywayappApplication.class, args);
   }
}

Tệp cấu hình bản dựng hoàn chỉnh được cung cấp bên dưới.

Maven – pom.xml

<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>flywayapp</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>
   <name>flywayapp</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.9.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.flywaydb</groupId>
         <artifactId>flyway-core</artifactId>
      </dependency>
      
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
   
</project>

Gradle – build.gradle

buildscript {
   ext {
      springBootVersion = '1.5.9.RELEASE'
   }
   repositories {
      mavenCentral()
   }
   dependencies {
      classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
   }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group = 'com.tutorialspoint'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
   mavenCentral()
}
dependencies {
   compile('org.flywaydb:flyway-core')
   compile('org.springframework.boot:spring-boot-starter-jdbc')
   compile('org.springframework.boot:spring-boot-starter-web')
   compile('mysql:mysql-connector-java')
   testCompile('org.springframework.boot:spring-boot-starter-test')
}

Bạn có thể tạo tệp JAR thực thi và chạy ứng dụng Spring Boot bằng cách sử dụng lệnh Maven hoặc Gradle được cung cấp bên dưới:

Đối với Maven, bạn có thể sử dụng lệnh hiển thị ở đây -

mvn clean install

Sau khi “XÂY DỰNG THÀNH CÔNG”, bạn có thể tìm thấy tệp JAR trong thư mục đích.

Đối với Gradle, bạn có thể sử dụng lệnh hiển thị ở đây -

gradle clean build

Sau khi “XÂY DỰNG THÀNH CÔNG”, bạn có thể tìm thấy tệp JAR trong thư mục build / libs.

Bây giờ, hãy chạy tệp JAR bằng cách sử dụng lệnh sau:

java –jar <JARFILE>

Bây giờ, Tomcat đã bắt đầu trên cổng 8080 và trong cửa sổ bảng điều khiển, bạn có thể xem nhật ký cơ sở dữ liệu đường bay như được hiển thị ở đây.

Bây giờ bạn có thể truy cập cơ sở dữ liệu và thực hiện các truy vấn đã chọn.