通过Spring Boot了解H2 InMemory数据库

介绍

基本上,数据库设置涉及几个步骤,然后才能在应用程序中通过已配置的数据源使用它。 在实际项目实施中,这实际上是必需的。 但是,在某些情况下,我们只需要为某些事情完成POC,而整个数据库设置工作仍然是必须的。 同样,对于单元测试,理想的是在数据库中拥有我们自己的记录集,使其独立,而不受部署环境中数据更改的影响。 对于此类用例,内存数据库是理想的解决方案。

内存数据库在应用程序启动时创建,而数据库在应用程序停止时销毁。

Spring Boot轻松集成了H2数据库。 因此,您可以轻松,快速地在真实数据库和内存数据库之间切换。

注意,H2 InMemory数据库是用Java编写的关系DBMS。

让我们看一下快速演示。

实作

让我们从Spring initializr生成Spring Boot项目。 确保添加Web,JPA,H2和DevTools依赖关系,如下所示。

H2内存数据库

让我们看一下生成的pom文件。

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.jcombat</groupId><artifactId>h2demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>h2demo</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.0.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.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

我们还注意到application.properties文件生成为–

application.properties

# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2# Datasource
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver

属性spring.h2.console.enabled = true启用位于http:// localhost:8080 / h2的Web控制台

H2内存数据库

单击“连接”,然后进入页面,在该页面中可以看到数据库中的可用表。

H2内存数据库

您可能想知道,如何创建Student表。 神奇之处在于data.sql位于src / main / resources。 只需确保您在data.sql文件中具有插入语句,如下所述–

data.sql

insert into STUDENT
values(10001,'Ajay', 'AAA1');insert into STUDENT
values(10002,'Ajit', 'AAA2');

Spring Boot自动配置检查data.sql文件中的值,并为您做必要的事情,即创建STUDENT表并执行insert语句。 聪明!

让我们检查一下如何处理这些学生记录。

为此,让我们现在创建Student实体类。

学生.java

package com.jcombat.entity;import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;@Entity
public class Student {@Id@GeneratedValueprivate Long id;private String name;private String section;public Student() {}public Student(Long id, String name, String section) {this.id = id;this.name = name;this.section = section;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSection() {return section;}public void setSection(String section) {this.section = section;}}

要访问数据库,让我们编写一个简单的JPA接口,该接口提供执行基本DB操作所需的帮助程序功能。

StudentRepository.java

package com.jcombat.repository;import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;import com.jcombat.entity.Student;@Repository
public interface StudentRepository extends JpaRepository<Student, Long> {}

现在让我们使用Command Line Runner定制Spring Boot入口点类,以便我们能够从命令行执行Spring Boot应用程序。

package com.jcombat.h2demo;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;import com.jcombat.repository.StudentRepository;@SpringBootApplication
@EntityScan("com.jcombat.entity")
@EnableJpaRepositories("com.jcombat.repository")
public class H2demoApplication implements CommandLineRunner {// mvn spring-boot:runprivate Logger LOG = LoggerFactory.getLogger("H2demoApplication");StudentRepository studentRepository;@Autowiredpublic H2demoApplication(StudentRepository studentRepository) {this.studentRepository = studentRepository;}public static void main(String[] args) {SpringApplication.run(H2demoApplication.class, args);}@Overridepublic void run(String... args) throws Exception {LOG.info("Student count in DB: {}", studentRepository.count());}
}

执行应用程序

要运行该应用程序,您可以直接从Eclipse IDE进行操作,也可以通过以下命令从命令行进行操作–

mvn spring-boot:run

执行后,我们会在控制台上看到以下输出–

下载源代码

H2内存数据库

翻译自: https://www.javacodegeeks.com/2018/11/understandin-inmemory-database-spring.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【渝粤题库】陕西师范大学210004幼儿园美术教育作业(高起专)

《幼儿园美术教育》作业 一、名词解释题 1、美术 2、曼陀罗 3、艺术 4、表现目标 5、意愿画 6、DBAE 7、夸张式表现 8、最近发展区 9、自由画 10、情节画 11、雕塑 12、艺术起源理论“巫术论” 13、儿童美术 14、物体画 15、工艺美术 16、过程目标 二、简答题 1、简述里德的艺术…

core identity mysql_Microsoft.AspNetCore.Identity 使用 mysql 报错处理

1.使用mysql 首先要确定mysql connector 支的版本&#xff0c;正面是链接https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core.htmlTable 9.2 Supported versions of Entity Framework CoreConnector/NETEF Core 1.1EF Core 2.0EF Core 2.16.10.4.…

【渝粤题库】陕西师范大学291003综合英语(三)作业(高起专、高起本)

《综合英语三》作业 Matching. Read the following words and match them with the explanations in the right column. ( ) 1. inaudible A. to talk proudly ( ) 2. fragrance B. angry ( ) 3. boast C. the quality of being new ( ) 4. survive D. easily seen; standing o…

【渝粤题库】陕西师范大学300005 中国历史文选

《中国历史文选》作业 一、解释下列句子中黑体加线的字或词 1&#xff0e;三月丙午&#xff0c;入曹。数之&#xff0c;以其不用僖负羁而乘轩者三百人也&#xff0c;且曰&#xff1a;“献状。” 2&#xff0e;微楚之惠不及此&#xff0c;退三舍辟之&#xff0c;所以报也。 3&am…

mysql 数据路由_node-路由操作mysql数据库

node大部分方法都是异步的&#xff0c;在操作数据库方法后面紧接着输出结果&#xff0c;输出的结果只会为空值&#xff0c;使用promise及其方便的解决这个问题&#xff0c;接下来看看node如何使用路由来处理不同请求&#xff0c;进而操作mysql数据库一、引入相关依赖node中默认…

行为设计模式:中介者

以前我们看过迭代器模式。 中介者模式在实现目标上有很大的不同。 它是行为模式之一&#xff0c;其目的是改变对象之间的通信方式。 中介器将代替对象之间的直接通信&#xff0c;而不是直接相互通信。 例如&#xff0c;想象一下金融交易的场景。 您确实想交易和购买&#xff…

【渝粤题库】陕西师范大学500006 算法语言 作业

《算法语言》作业 一、填空题 1、13/2的运算结果为 &#xff0c;’A’2的运算结果是 。 2、C 语言源程序需经过 、 两个过程生成可执行文件。 3、如果表示16进制常量45&#xff0c;在C 中应写为 。 4、C中变量从其作用域上分为 、 5、表达式X12的值为 。 6、3(12>0)的值为 。…

mysql多数据源事务_多数据源一致性事务解决方案

spring 多数据源配置spring 多数据源配置一般有两种方案&#xff1a;1、在spring项目启动的时候直接配置两个不同的数据源&#xff0c;不同的sessionFactory。在dao 层根据不同业务自行选择使用哪个数据源的session来操作。2、配置多个不同的数据源&#xff0c;使用一个session…

【渝粤题库】陕西师范大学700009 现代生物科技

《现代生物技术》作业 一.名词解释 1.生物技术 2.愈伤组织 3.前体 4.cDNA文库 5.化学酶工程 6.酶分子修饰 7.连续培养 8.DNA芯片 9.细胞融合 10.基因工程载体 11.蛋白质工程 12微生物转化 13.人工种子 14.胚胎移植 15.初级代谢产物 16.动物克隆技术 17、限制性内切酶 18、细胞全…

www.how2j.com_HOW-TO:快速开始使用Spring 4.0,以构建简单的REST-Like API(演练)

www.how2j.comHOW-TO&#xff1a;快速开始使用Spring 4.0&#xff0c;以构建简单的REST-Like API&#xff08;演练&#xff09; 关于使用Spring MVC创建Web API的另一篇教程。 不太复杂。 只是一个演练。 生成的应用程序将提供简单的API&#xff0c;将Mongo作为其持久性&#x…

【渝粤题库】国家开放大学2021春3938管理英语2题目

试卷代号&#xff1a;3938 2 0 2 1年春季学期期末统一考试 管理英语2 试题 2021年7月 注 意 事 项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人…

flutter 返回指定界面_Flutter页面路由导航及传参

转载请注明出处: https://learnandfish.com/概述 每个应用都有很多个页面&#xff0c;在flutter中同样也有很多页面&#xff0c;被称之为路由(Router)&#xff0c;页面之间的跳转通过导航器(Navigator)进行管理。其中 Navigator.push 和 Navigator.pop 是最简单的跳转到新页面和…

正确的工作流程:我应该使用哪个OAuth 2.0流程?

什么是OAuth 2.0 OAuth 2.0是一个已被广泛采用的委托授权框架&#xff0c;已经存在了很多年&#xff0c;并且似乎已经存在。 如果您不熟悉OAuth 2.0的基本概念&#xff0c;可以使用 川崎孝彦写的优秀文章 。 这只是OAuth 2.0各方的简要提醒&#xff1a; 资源所有者–受保护资…

【渝粤题库】广东开放大学 秘书实务21 形成性考核

&#x1f449;关注我,看答案&#x1f448; 选择题 题目&#xff1a; 秘书职能包括以下哪几项&#xff1f; 选择一项或多项&#xff1a; 题目&#xff1a; 秘书职能包括以下哪几项&#xff1f; 选择一项或多项&#xff1a; 题目&#xff1a; 下列不属于企业文化的功能是&#…

mysql workbench入门_5分钟入门MySQL Workbench

接下来进入下一步&#xff0c;使用Workbench执行sql文件&#xff1a;1.打开Workbench&#xff0c;主页面上点击要connect的连接。2.注意系统偏好设置里&#xff0c;MySQL是running的状态&#xff0c;否则无法执行。创建数据库&#xff1a;点击创建数据库按钮&#xff0c;输入数…

【渝粤题库】广东开放大学 形成性考核 - 副本 (17)

选择题 题目&#xff1a;产值中心论关心的焦点是&#xff08; &#xff09; 题目&#xff1a;要求企业“以产品为中心”的业务模式向“客户为中心”的模式转变&#xff0c;这是客户关系管理的&#xff08; &#xff09; 题目&#xff1a;客户关系管理系统需要建立数据仓库…

【渝粤题库】广东开放大学 文化投资与贸易 形成性考核

选择题 题目&#xff1a;文化产业的最大价值在于&#xff08;&#xff09;的规模效应。 题目&#xff1a;文化企业指那些在文化产业环境下以创意、生产、交换、&#xff08;&#xff09;文化产品为方式、以期获得商业利润为目的的工商组织。 题目&#xff1a;由文化产业的内涵可…

apache +php + mysql_apache+php+mysql

apachephpmysqlimapldapjdktomcat的安装以下过程在redhat6.2 7.0下通过。使用软件&#xff1a;apache_1.3.19.tar.gzimap-2000c.tar.Zmod_jserv.so..soj2sdk-1_3_0_02-linux.binmysql-3.23.33-pc-linux-gnu-i6862.tar.gzopenldap-2.0.7.tar.gzphp-4.0.4pl1.tar.gzjakarta-tomca…

【渝粤题库】广东开放大学 个人与团队管理 形成性考核

题库查询系统 选择题 题目&#xff1a; 按照KOLB学习周期&#xff0c;一个完整的学习过程包含四个阶段&#xff0c;不属于这四个阶段的是&#xff08; &#xff09;。 A、获得经验 B、反思 C、认真分析 D、理论化和应用 选择一项&#xf…

使用Spring Boot和Vue进行有益的开发

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 Vue是一个Web框架&#xff0c;由于它的精简和刻薄&#xff0c;最近引起了很多关注。 …