模式、存储与兼容 H2 支持嵌入、服务器、混合的运行模式,以及在内存或持久性的数据存储方式,还有兼容各类数据库 2.1 模式 嵌入模式:应用程序和数据库在同一个 JVM 中,这是最快和最简单的连接模式。...缺点是一个数据库在任何时候都只能在一个虚拟机(和类加载器)中打开 服务器模式:可理解为 C/S 模式,通过 TCP/IP 打开数据库,服务器模式比嵌入式模式慢。...,但仍有一些差异(MySQL 文本默认不区分大小写,而 H2 是区分大小写的),H2 可模拟特定数据库的行为,但这种模仿是有限的,普通情况下可正常使用(下面举例 MySQL) 兼容 MySQL : 在数据库...-- 高版本不会自动创建库,连接前手动执行脚本 --> <!.../持久化到本项目根目录 # mem:test 存放到内存中 url: jdbc:h2:.
希望在 Spring Boot 中配置 H2 数据库来进行功能测试。 如何进行配置能来让启动的时候自动载入数据和进行测试?...spring.h2.console.enabled 在 Spring Boot 后启用控制台,用户可以通过 Web 界面来访问 H2 的控制台。...spring.h2.console.path 网页界面中通过 URL 可以访问控制台的地址,这个地址可以自由和任意修改。...spring.datasource.url Spring 项目中数据源的连接参数,在这个参数中你定义了一个数据库的名称为 scodb,在通过网页界面进行访问的时候,会提醒你输入连接参数。...spring.datasource.schema Spring 启动的时候需要载入的 sql 文件。这个文件将会在 Spring 启动后被执行,创建数据库表和插入测试数据等。
支持内嵌和服务器模式;是一种内存的数据库 支持浏览器控制台 jar包比较小 另外 如果使用公共的开发数据库,服务器如果回收再测试就需要继续安装建表和插入数据。...2.2 使用MySQL测试后回滚 使用MySQL测试后回滚是常见的一种方式,最大的问题如果是自己本地测试,其他人如果想测试需要再创建表和插入数据,非常麻烦。...三、编码 首先看项目结构 本示例非常简单,提供了一个UserInfo实体,建表语句放在schema.sql中,data.sql插入几条记录。...4.2 源码 可以通过配置文件 点击数据源配置下面几项,可以跳转到spring-boot-autoconfigure.jar中查看参数对应的自动配置的类。...大家还可以进入h2的驱动jar包和mybatis的jar中查看源码的逻辑。 通过这些可以学到更多内容。 五、总结 本文主要讲述SpringBoot使用H2内存数据库进行单元测试的案例。
,通过它可以为实体指定表(talbe),目录(Catalog)和schema的名字。...该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成 @GeneratedValue 指定主键的生成策略。...文件中对数据库进行连接配置 spring.datasource.url=jdbc:h2:mem:h2test,配置h2数据库的连接地址 spring.datasource.driver-class-name...:db/schema.sql,进行该配置后,每次启动程序,程序都会运行resources/db/schema.sql文件,对数据库的结构进行操作。...该配置非常适合开发环境,我会把数据库的结构构建sql放在resources/db/schema.sql,数据sql放在resources/db/data.sql中。
查询语言 这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合 使用H2工程 因为我们使用JPA和H2,所以我们需要同时添加这两个依赖,同时为了偷懒...*********** #创建表的MySql语句位置 spring.datasource.schema=classpath:schema.sql #插入数据的MySql语句的位置 spring.datasource.data...#创建表的MySql语句位置 spring.datasource.schema=classpath:schema.sql #插入数据的MySql语句的位置 spring.datasource.data...控制台,发现一个有意思的现象,两边的表都创建了 说明jpa也会自动建表的(在扫描到@Entity)的时候 测试接口 目前没有数据,我们在控制台添加几条 ---- 重新测试接口 新增操作 /**...我们生成了三张表 默认中间表的命名是一对多中一表名_一对多中多的表名 使用@JoinColumn(name = "user_id")指定关联字段 避免中间表的产生 注意点 @JoinColumn如果不加
在初始化数据库和导入数据一文中,我们探索了在Spring Boot项目中如何创建数据库的表结构,以及如何往数据库中填充初始数据。...在程序开发过程中常常会在环境配置上浪费很多时间,例如在一个存在数据库组件的应用程序中,测试用例运行之前必须保证数据库中的表结构正确,并且已经填入初始数据。...对于良好的测试用例,还需要保证数据库在执行用例前后状态不改变。 在之前应用的基础上,schema.sql文件中包含创建数据库表结构的SQL语句、data.sql文件中包含填充初始数据的SQL语句。...分析 我们通过Spring的ResourceDatabasePopulator和DatabasePopulatorUtils类加载test-data.sql文件,在test-data.sql文件中的数据仅仅对当前所在的...在loadDataFixtures()方法中,首先通过context.getResources方法加载test-data.sql文件,然后通过DatabasePopulatorUtils.execute
在Spring Boot中加载初始化数据 在Spring Boot中,Spring Boot会自动搜索映射的Entity,并且创建相应的table,但是有时候我们希望自定义某些内容,这时候我们就需要使用到...依赖条件 Spring Boot的依赖我们就不将了,因为本例将会有数据库的操作,我们这里使用H2内存数据库方便测试: ...Country表。...文件 有时候我们需要自定义数据库的schema,这时候我们可以使用到schema.sql文件。...classpath中的new_country.sql文件。
在开发测试过程中,由于种种原因,连接Mysql或者Oracle进行测试可能会产生很多问题,比如网络原因,线上数据库冲突以及性能等问题,这时候如果能将数据库跑在内存中,会省很多问题 下面记录一份H2内存数据库的使用方法...scope为test范围 com.h2database h2...配置数据源 spring: datasource: ## 这里和引入mysql驱动没什么区别 driver-class-name: org.h2.Driver url: jdbc:h2...:mem:test ## 由于数据库会跑在内存中,所以程序需要在启动的时候在内存中创建数据库,这里指定数据库的表结构(schema)和数据信息 (data),语法和mysql大同小异 schema...: classpath:db/schema.sql data: classpath:db/data.sql 经过上面两步的配置,就可以直接在程序中无感知(和使用Mysql时候一样)使用H2内存数据库了
/db/schema.sql文件,对数据库的结构进行操作。...schema: classpath:db/schema.sql #进行该配置后,每次启动程序,程序都会运行resources/db/data.sql文件,对数据库的数据操作。...consloe就可以在远程访问了。...h2: console: settings: web-allow-others: true #进行该配置,你就可以通过YOUR_URL/h2访问h2 web consloe...使用配置的账号密码进行登录,别的不说,先跑起来最要紧 (注意:这时对数据库中的数据进行任何的改变都将是无效的,需要对数据做持久化才能保存数据) 持久化 修改yaml配置 # windows本地数据库地址
通过schema.sql文件定义数据库的表结构、通过data.sql导入测试数据。...现在可以将import.sql重命名为data.sql,然后再创建新的文件schema.sql。在删除数据表时,需要考虑依赖关系,例如表A依赖表B,则先删除表B。...在这个方案中我们主要使用以下配置项: spring.jpa.hibernate.ddl-auto=create-drop配置项告诉Hibernate通过@Entity模型的定义自动推断数据库定义并创建合适的表...在程序启动时,经由Hibernate计算出的schema会用来创建表结构,在程序结束时这些表也被删除。...schema.sql文件包含创建数据库表结构的SQL语句,在应用程序启动过程中,需要创建数据库表结构时,执行该文件中的DDL语句。
通过Profile配置,Spring可以在根据环境在运行阶段来决定bean的创建与否,先举例如下,主要从Profile bean的配置和激活来展开。...Profile bean的配置 通过注解@Profile配置 对于上面比方中的第一种情况,在开发环境中我们配置一个数据源可能是这样的 @Bean(destroyMethod = "shutdown...,模式定义在类文件下的schema.sql文件中 schema.sql create table Things ( id identity, name varchar(100) ); 这里定义了一张...xml配置文件配置 除了简单的注解方式,我们哈可以通过在xml配置文件中声明的方式,具体配置如下 datasource-config.xml <?...当然,如果两者都没有设置的话,则只会创建那些定义在相应的profile中的bean。
2.2 安装MySQL 当前Saturn支持2个数据库:MySQL和H2。H2主要用于测试,生产环境推荐使用MySQL。...关于MySQL的版本,没有任何要求。 安装MySQL,遵循MySQL的官方文档进行这里不作说明。 2.3 数据准备 下面操作是针对MySQL,对于H2可以仿照类似的做法。...下面是个例子: CREATE DATABASE saturn CHARACTER SET utf8 COLLATE utf8_general_ci; 2.3.2 schema创建 从这里获取最新的schema.sql...如果希望获得其他版本的schema,可以在源代码的其他tag上获取。 执行schema.sql。...在注册中心的“域管理”页面,添加域(namespace), 同时与zk cluster绑定。 ? 创建完域,下一章会告诉你,如何创建一个Java作业。
Team 表:管理用户所属的团队。创建空白项目首先,使用 Spring Initializr 创建一个空白项目并创建所需的包和目录。...--- H2 数据库表初始化脚本 │ │ └ data.sql --- H2 数据库数据初始化脚本 │ │ │ └ test --- 用于测试(本例未使用) └ pom.xml实现准备在直接实现...准备工作1:表定义和数据库连接定义设置因为单独设置每个 DBMS 太麻烦了,所以将使用 H2DB。为了在应用启动时将表和数据自动导入到 H2DB,将以下内容保存在 schema.sql 中。...步骤1:定义 GraphQL 模式在 resources/graphql/ 中创建一个名为 graphql-schema.graphqls 的文件,并定义 GraphQL 模式和查询。...实现与每个表对应的 Repository 接口,并将其存储在 repository 包中。(由于这次是简单的表结构,按表分别实现接口。)
,h2 web consloe 就可以在远程访问了。...spring.h2.console.enabled=true 添加数据库结构脚本 在resource目录下新建文件夹db,创建文件schema.sql,内容如下 create table if...数据库 启动springboot应用程序,在浏览器中输入http://localhost:2088/h2,可以打开h2数据库管理器登录界面,能够进入如下页面说明H2集成成功!...使用spring data jpa 创建实体与数据库表的映射对象 @Entity @Data @NoArgsConstructor @ToString public class ShortLink {...以下是数据库表中保存的数据,ID是其中的短链链接参数生成与转换的关键 ?
JDBC的异常 VS Spring 的数据库访问异常 如你所见,Spring为在读取或者写入数据库时可能出错的原因设置了对应的异常类型,Spring 实际提供的数据库访问异常要远多于表10.1所列出的那些...跟应用相关的数据访问任务——创建语句、绑定参数和处理结果集等,则需要在回调函数中完成。...10.2.3 使用基于JDBC驱动的数据源 在Spring中最简单的数据源就是通过JDBC驱动配置的数据源。... 配置中,可以配置多个元素,用于设置和初始化数据库:在这个例子中,schema.sql文件中包含用于创建数据表的关系;test-data.sql
Spring Boot为创建数据库的数据源提供了非常好的支持。不需要编写任何额外的代码来在Spring Boot中创建数据源(DataSource)。...只需添加依赖项并执行配置详细信息就足以创建DataSource并连接数据库。在本章中,将使用Spring Boot JDBC驱动程序连接来连接数据库。.../main/resources 目录下创建schema.sql 文件和data.sql 文件来连接H2数据库。...schema.sql 文件的内容如下所示。...中创建数据库和表,如图所示 - 对于属性文件用户,请在application.properties 文件中添加以下属性。
例如,要创建和删除表,可以将以下行添加到 application.properties : spring.jpa.hibernate.ddl-auto=create-drop Hibernate自己的内部属性名称...如果您不想要此行为,则应在 application.properties 中 将 spring.jpa.open-in-view 设置为 false 。...30.5使用H2的Web控制台 该H2数据库提供了一个 基于浏览器的控制台是Spring Boot可以自动为您配置。满足以下条件时,将自动配置控制台: 您正在开发基于servlet的Web应用程序。...com.h2database:h2 在类路径上。 您正在使用Spring Boot的开发人员工具。...30.5.1更改H2控制台的路径 默认情况下,控制台位于 /h2-console 。您可以使用 spring.h2.console.path 属性自定义控制台的路径。
H2 不香么? 为什么使用MariaDB4J ? 谈到在测试中使用内存数据库,估计首先想到的就是H2了。使用时也非常方便,只要在下述SpringBoot的配置文件里修改一下datasource即可。...如果要导入数据库表和基础数据的话,也只要在src/test/resouces下面提供如下两个文件 schema.sql – 创建schema和表 data.sql – 导入基础数据 看上去是不是很方便呢...不过随着在项目中使用的深入,就发现了一些问题语法上兼容性(如注释)以及产品功能上的问题(如多层临时表),具体可以关注笔者之前整理的一个list。...如果选择继续使用H2,就需要团队为H2去维护另外一套H2专用的schema。因此,使用MySQL的团队需要额外寻找一个H2的替代品,一个更兼容MySQL的内存数据库。...SpringBoot中的配置 在application-test.properties文件中使用如下配置, #Location of db files. delete this directory if
4.如何跟踪业务流的处理顺序 这个顺序就需要通过通过开发人员在一起进行梳理。...通过order微服务访问user微服务,Trace始终不变,span是块,相通的span说明是在一块的。 之前看日志一点一点的找是不是太2了,直接还是通过可视化的工具来完成了吧。...# 指定数据源类型 schema: classpath:schema.sql # 指定h2数据库的建表脚本 data: classpath...# 指定数据源类型 schema: classpath:schema.sql # 指定h2数据库的建表脚本 data: classpath...spring.sleuth.sampler.percentage 指定需采样的请求的百分比,默认值是0.1,即10%。这是因为在分布式系统中,数据量可能会非常大,因此采样非常重要。
1. dao层单元测试 最开始写单测的时候,要连着DEV的数据库,这时候会有两个烦恼:网络有问题的时候单测运行不通过、数据库里造成脏数据的时候会导致应用程序异常。...有如下几个步骤: 在resources下新建目录h2,存放schema.sql和data-prepare-user.sql文件,前者用于保存建表语句,后者用于准备初始数据 test-data-source.xml...="classpath:h2/schema.sql" encoding="UTF-8"/> <jdbc:script location="classpath:<em>h2</em>/data-prepare...*:这个类里<em>的</em>方法可以用于指定Mock组件<em>的</em>预期<em>行为</em>,包括异常处理。...三、总结 单元测试<em>的</em>三个步骤 准备数据、<em>行为</em> 测试目标模块 验证测试结果 除了本文中提到<em>的</em>Junit、Mockito、<em>H2</em>,还有很多其他<em>的</em>单元测试框架,例如TestNG、spock等。
领取专属 10元无门槛券
手把手带您无忧上云