`

193. Spring Boot 数据库迁移:概述

阅读更多

 

【视频&交流平台】

à SpringBoot视频http://t.cn/R3QepWG

à SpringCloud视频http://t.cn/R3QeRZc

à Spring Boot源码https://gitee.com/happyangellxq520/spring-boot

à Spring Boot交流平台http://412887952-qq-com.iteye.com/blog/2321532

à Spring Boot Shiro视频http://t.cn/R3QDMbh

à Spring Boot 2.0 之Spring Data 和JPAhttp://t.cn/R1pSojf

 

前言:

       在之后的几篇文章中会介绍下数据库迁移工具Fly和Liquibase。

在这里的数据库迁移主要是对数据库结构版本管理和迁移

 

一、为什么需要数据库迁移工具?

       那在没有使用迁移工具的时候,我们会碰到什么呢?

(1)多人协同开发,对数据库结构变更的管理困难:不同的开发人员在开发产品特性时,都有可能更新数据库(添加新表,新的约束等)。当开发人员完成工作并提交代码时,代码会被合并到主分支并在测试服务器上执行单元测试与集成测试。我们在哪个环节来执行数据库的更新操作呢?由QA 部门手工执行sql 脚本?或者我们开发一断程序自动执行数据库更新?以什么顺序来执行这些更新脚本?这些问题同样存在于生产环境。

(2)多环境,升级困难:我们的产品部署在不同的客户服务器上,以及很多的测试、联调、实验局、销售环境上。不同的客户和测试环境上都部署着不同版本的产品。当他们需要升级他们的产品到新的版本时,我们不仅需要让他们的管理员可以升级产品到新的版本,同时需要保留他们的已有数据。在升级产品的步骤中,我们清楚地知道客户数据库的当前版本,以及需要在该数据库上执行哪些数据库更新脚本,来更新数据库表结构与数据库中已存在的数据。当升级完成时,数据库表结构及数据应当与升级后的产品版本保持一致。

 

二、数据库迁移方式

2.1 schema.sql

       最简单的方式可以在schema.sql里定义schema。在第一次运行时,这么做没有问题,但随后每次启动应用程序时,这个初始化脚本都会失败,因为数据表已经存在了。这就要求在书写初始化脚本时格外注意,不要重复执行那些已经做过的工作。

2.2 JPA的ddl-auto

如果在项目中使用的是JPA的话,那么可以通过Spring Boot的spring.jpa.hibernate.ddl-auto属性将hibernate.hbm2ddl.auto属性设置为update,就能够自动创建表结构信息。如果使用的是mybatis的话,那么这种方式就不能使用了。

2.3 使用数据库迁移工具

使用数据库迁移工具:它使用一系列数据库脚本,而且会记录哪些已经用过了,不会多次运用同一个脚本。应用程序的每个部署包里都包含了这些脚本,数据库可以和应用程序保持一致。Spring Boot为两款流行的数据库迁移工具提供了自动配置支持:

(1)Flyway:http://flywaydb.org

(2)Liquibase:http://www.liquibase.org

       在接下来的文章中,我们会分别介绍下Flyway和Liquibase。

 

【预告】

194. Spring Boot 数据库迁移:Flyway

195. Spring Boot 2.0 数据库迁移:Flyway

196. Spring Boot 数据库迁移:Liquibase

196. Spring Boot 2.0数据库迁移:Liquibase 

 

微信公众号「SpringBoot最近更新:

 

206. Spring Boot 2.0 Swagger2:使用
205. Spring Boot 2.0 Swagger2:初识Swagger
当要离开的时候,我却动情了
205. jetcache:你需要知道的小技巧
204. jetcache:在Spring Boot中怎么玩?
遇见阿里,遇见自己
203. 阿里jetcache
202. 阿里Pandora Boot
微信公众号赞赏功能升级了,真的假的?
《喜剧之王》「我养你啊」之人生选择
201. Spring Boot JNDI:Spring Boot中怎么玩JNDI
510阿里日,马老师献上最走心、最科技范儿证婚词~
200. Spring Boot JNDI:在Tomcat中怎么玩JNDI?
199. Spring Boot JNDI:这是虾米?
Spring Boot 数据库迁移系列
Spring Boot葵花宝典:初露锋芒:MyBatis insert异常 Parameter 'name' not found
198. Spring Boot Flyway工作原理
21天习惯养成法则
197. Spring Boot 2.0数据库迁移:Liquibase
196. Spring Boot 数据库迁移:Liquibase
195. Spring Boot 2.0数据库迁移:Flyway
194. Spring Boot 数据库迁移:Flyway
193. Spring Boot 数据库迁移:概述
分享到:
评论

相关推荐

    十分钟上手spring boot

    ##### 一、Spring Boot文档概述 **1. 关于本文档** 本文档旨在帮助初学者快速掌握Spring Boot的基本操作与核心概念,适合那些希望迅速上手Spring Boot项目的新手。 **2. 获取帮助** 对于学习过程中遇到的问题,...

    精通 Spring Boot 42 讲

    5. **数据访问**:涵盖JPA和Hibernate的使用,以及如何进行数据库迁移。 6. **Actuator详解**:介绍如何利用Actuator进行应用监控和管理。 7. **Spring Boot与Security**:讲解如何使用Spring Security实现用户认证...

    spring-boot-actuator-web-api.pdf

    Spring Boot Actuator是一个为Spring Boot应用程序提供生产级别的功能监控和管理的工具。它提供了一系列API端点,允许我们深入应用程序的内部工作情况,如度量收集、应用健康状况、审计事件、环境信息、Bean信息等。...

    spring-boot-reference.pdf

    ### Spring Boot 参考指南知识点概述 #### 一、Spring Boot 概览 - **Spring Boot** 是一种基于 Java 的框架,旨在简化新 Spring 应用程序的初始设置和依赖管理。 - **版本**: 本参考文档适用于 Spring Boot 2.1.0...

    springmvc转为springboot--干货.docx

    将一个传统的Spring MVC项目迁移到Spring Boot的过程中,主要涉及到的核心技术包括Spring Boot的特性、SSM(Spring、Spring MVC、MyBatis)整合、Shiro安全框架、JSP视图解析以及Redis缓存等。以下是对这些关键点的...

    spring boot 代码生成方法块

    2. **JHipster**:这是一个全面的Spring Boot应用生成器,不仅可以生成服务层和DAO层代码,还能生成前端Vue.js、React或Angular应用,以及数据库迁移文件。 3. **Lombok**:虽然不是专门的代码生成工具,但Lombok是...

    spring-framework-5.1.x.zip

    6. **Spring Boot 2.x集成**:与Spring Boot 2.x的紧密集成,提供了更简洁的配置和更快的应用启动速度。 三、核心组件详解 1. **Spring Core**:提供DI和AOP的基础,是整个Spring框架的基石。DI使得对象之间的依赖...

    spring in action(英文版).pdf

    7. **Spring Boot**:Spring Boot是Spring的一个子项目,旨在简化Spring应用的初始搭建以及开发过程。它预设了默认配置,减少了开发者需要编写的基础设置代码。 8. **Spring Security**:这个模块提供了全面的安全...

    spring-boot-中文参考指南

    ### Spring Boot 中文参考指南知识点概述 #### 一、Spring Boot 概览 **Spring Boot** 是一个基于 **Spring Framework** 的开源框架,它简化了新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式(默认...

    Java分布式文件存储项目开发视频教程 (Hbase分布式数据库+Spring boot技术)

    - **使用Sqoop进行数据迁移**:指导如何使用Sqoop将数据从传统数据库导入到Hadoop或从Hadoop导出到传统数据库。 #### 需求分析与技术选型(第7章) - **需求收集**:如何进行有效的业务需求收集和整理。 - **系统...

    com.xpand.starter-canal.jar

    `spring-boot-starter-canal`模块提供了自动配置,只需在Spring Boot的`application.properties`或`application.yml`中配置Canal的相关参数,如MySQL服务器地址、端口、用户、密码、目标数据库等,即可启动Canal服务...

    官方原版源码spring-framework-4.3.25.RELEASE.zip

    理解4.x版本的源码,有助于开发者更好地过渡到新版本,并掌握Spring Boot、Spring Cloud等相关技术。 总之,Spring Framework 4.3.25.RELEASE的官方源码是Java开发者宝贵的教育资源。通过深入学习,不仅可以提升...

    实施人力资源管理系统

    1. Java EE框架:使用Spring Boot或Struts2等框架,实现系统的快速开发和部署。 2. 数据库连接:JDBC或ORM框架(如Hibernate、MyBatis)用于数据库操作,确保数据安全。 3. Web服务:通过SOAP或RESTful API实现与...

    [应用开发及迁移][客户端编程开发框架]Activiti指南.pdf

    ### [应用开发及迁移][客户端编程开发框架]Activiti指南 #### 1. 概述 Activiti 是一款非常流行且强大的开源工作流引擎,在业务流程管理(BPM)领域有着广泛的应用。它提供了灵活的工作流定义语言以及一系列工具来...

    [应用开发及迁移][客户端编程开发框架]Flyway指南.pdf

    - **命令行**:通过命令行接口执行数据库迁移。 - **Java API**:直接通过Java代码集成Flyway功能。 - **Maven插件**:在构建过程中自动化数据库迁移。 - **Gradle插件**:同样可以在构建流程中集成Flyway。 这些...

    SpringBoot整合MyBatis

    #### 一、Spring Boot 整合 MyBatis 概述 在现代企业级应用开发中,Spring Boot 和 MyBatis 是非常受欢迎的技术栈组成部分。Spring Boot 提供了一种简化 Spring 应用程序设置和部署的方法,而 MyBatis 则是一个支持...

    sp document

    7. **Spring Boot**:Spring Boot简化了Spring应用的初始搭建和运行过程。它默认配置了许多常见设置,使得开发者能快速启动和运行项目。 8. **Spring Security**:这是一个强大的安全框架,提供了身份验证和授权...

    hotel-1.2.zip

    1. **Spring Boot**:作为基础框架,负责配置、初始化、运行应用,提供了自动配置、嵌入式Web服务器(如Tomcat)、健康检查等功能。 2. **Spring Data JPA**:简化了数据访问层的开发,通过注解驱动的方式,可以轻松...

    spring-framework-4.3.8.RELEASE-jar.zip

    1. **Spring框架概述** Spring是一个开源的Java平台,它简化了创建和管理Java EE应用程序的过程。其核心特性包括依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP),这使得...

    毕业设计:基于Springboot的汽车租赁管理系统论文.docx

    ### 毕业设计:基于Spring Boot的汽车租赁管理系统 #### 概述 随着社会的快速发展,人们的生活水平显著提高,工作与生活的节奏不断加快。为了更好地利用时间、提高效率,许多事务开始向线上迁移,其中包括了汽车...

Global site tag (gtag.js) - Google Analytics