048-H2数据库
什么是H2 database?
H2是一个短小精干的嵌入式数据库引擎,主要的特性包括:
1、免费、开源、快速;
2、嵌入式的数据库服务器,支持集群;
3、提供JDBC、ODBC访问接口,提供基于浏览器的控制台管理程序;
4、Java编写,可使用GCJ和IKVM.NET编译;
5、短小精干的软件,1M左右。
纯内存集成
首先创建项目:
我们用mybatis进行集成,之所以加入jpa是为了让项目在启动的时候根据实体类自动建表,如果用hibernate集成会更简单一些。
配置文件:
可以看到纯内存的数据库不用任何配置。
接下来看业务代码,实体类:
为了让项目启动的时候自动建表,最少使用@Entity和@Id两个注解。这也是加入jpa的原因。
接下来是mapper类:
service类:
controller类:
然后启动项目,访问接口:
控制台:
这样的数据库停止项目就会消失,启动项目会重建,比较适合演示小功能使用。
数据存入本地
h2的数据也是可以存入本地的,在配置文件增加下面的配置:
上面的数据源配置不说,下面的spring.jpa.hibernate.ddl-auto配置有create、create-drop、update、validate、none几个值,
create:每次加载hibernate会自动创建表,以后启动会覆盖之前的表,所以这个值基本不用,严重会导致的数据的丢失。
create-drop : 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除,下一次启动会重新创建。
update:加载hibernate时根据实体类model创建数据库表,这是表名的依据是@Entity注解的值或者@Table注解的值,sessionFactory关闭表不会删除,且下一次启动会根据实体model更新结构或者有新的实体类会创建新的表。
validate:启动时验证表的结构,不会创建表
none:启动时不做任何操作
此处设置为update可以保证停止时不删数据库,重启数据依然存在。同时也看到对应目录下多了几个数据文件:
其它代码不变,重启项目,在项目中新增一条数据,然后再次重启可以发现数据依然存在。
注意,以上项目为了演示与mybatis整合,所以麻烦一些,如果和jpa整合是最理想的。
代码地址: https://gitee.com/blueses/spring-boot-demo