SpringBoot集成H2-Database

一、什么是H2Database

H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。

二、H2Database有什么特点

1、H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
2、可以同应用程序打包在一起发布
3、它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态
4、提供JDBC访问接口,提供基于浏览器的控制台,可以执行sql
5、免费,开源,够快
6、安装0配置,下载好就可以用

三、下载与安装

h2database 官网地址:http://www.h2database.com/html/main.html

下载解压后进入H2 的 bin 目录,如果在 Window 环境下使用,可以运行 h2.bat 或 h2w.bat。区别只是前者是黑框框运行,关闭黑框框就是关闭服务,后者是后台静默运行。

运行了 h2.bat,系统会进入:

或者自己打开浏览器,输入地址:http://localhost:8082 访问 H2 数据库的 Web Console。

可能看到现在还是没明白这是个啥,不要慌,看下面demo!

四、springboot使用Database

这里我用的是datajpa来作为持久层框架,原因就是他可以省去创建表,可以快速体验数据库。

1、导入依赖

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

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

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
      
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<scope>runtime</scope>
</dependency>

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

2、添加springboot配置

spring:
   datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:D:/h2Data/test;AUTO_SERVER=TRUE
    username: sa
    password:
   jpa:
    show-sql: true
    hibernate:
      # 每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
      ddl-auto: update

这个连接输的和配置文件一样的,我是将它持久化到d盘了,可以自行更改。

3、添加实体类

@Entity
@Data
public class User {
    
    
	
	@Id //主键
	private Integer id;
	private Integer age;
	private String name;
	private String address;
	private String city;
}

4、添加jpa接口

@Repository
public interface UserRepository extends JpaRepository<User, Integer>{
    
    
}

5、测试接口

直接用单元测接口即可。

@RunWith(SpringRunner.class)
@SpringBootTest
class SpringBootH2ApplicationTests {
    
    
	
	@Autowired
	private UserRepository userRepository;

	@Test
	public void addUser() {
    
    
		User user = new User();
		user.setId(1);
	    user.setName("李四");
	    user.setAddress("北京");
	    user.setAge(19);
	    user.setCity("北京");
	    userRepository.save(user);
	}
}

查看数据库。

这里可以看到刚刚输入持久化地址,已经存在了db文件。
当我关闭服务器在启动,刚刚添加的数据仍然是存在的。这就是持久化。

五、用后感受

在做完demo瞬时间应该就明白了。说白了就是个数据库。

这个H2-Database总的来说跟mysql,oracle有点区别的,从连接上就可以看出来, 平时我们用mysql都是创建库,然后就有个固定的库连接,而Database他相当于我们可以指定连接,指定完就能使用,并且会根据连接的地址,将数据会持久化到指定位置。
至于sql层面的差距这个有待使用,毕竟很少公司在用,大部分都是oracle、mysql,但是总的来说Database来作为我们平时做小demo什么的还是挺方便的。

六、Database运行方式

所谓的运行方式,也是相当于在配置数据库连接。持久不持久化也是通过连接配置。

1、内嵌式

内嵌式主要有两种,一种是内存模式,这种模式不会落地持久化,所以比较适合测试,关闭连接后数据库就清空,只需要添加

url: jdbc:h2:mem:DBName;DB_CLOSE_DELAY=-1

另外一种是持久化模式,这种模式会将数据落地持久化到指定的目录,生成与数据库同名的.mv.db文件

url: jdbc:h2:./test

这个就是上面配置的持久化模式。
AUTO_SERVER=TRUE:启动自动混合模式,允许开启多个连接,该参数不支持在内存中运行模式

url: jdbc:h2:file:D:/h2Data/test;AUTO_SERVER=TRUE

2、服务式

服务式就是指定一个tcp的远程目录

URL = jdbc:h2:tcp://localhost/~/test

猜你喜欢

转载自blog.csdn.net/weixin_43888891/article/details/119737372