目录
一、什么是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