H2Database 简要介绍及内嵌应用

#H2Database 简要介绍及应用
##简要介绍
h2是一个开源的纯java编写的轻量级数据库,是一个用Java开发的嵌入式数据库,只有一个jar文件,
可以直接嵌入到应用项目中。

h2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据,它的另一个用途是用于单元测试。

h2启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。h2的第三个用处是作为缓存,作为NoSQL的一个补充。

h2的数据库服务,可通过安装服务端软件(windows和linux均支持)来提供数据库服务,单也可以直接通过h2.jar包直接通过java代码
创建服务,从而提供相应的数据库服务。通常使用h2.jar包形式来提供服务,一般都是便于用作嵌入式数据库服务时使用。如果作为普通
的数据库服务,通常都是安装服务端软件。

  • 主要特征

  •   • 超快的数据库引擎 
      • 开源 
      • 纯JAVA编写 
      • 支持标准SQL和JDBC 
      • 支持内嵌模式、服务器模式和集群 
      • 高强度的安全保障 
      • 支持PostgreSQL的ODBC驱动 
      • 多种并发机制
    
  • 其他特征

  •   • 支持磁盘和内存数据库,支持只读数据库,支持临时表 
      • 支持事务(读提交和序列化事务隔离),支持2阶段提交 
      • 支持多连接,支持表级锁 
      • 使用基于成本的优化机制,对于复杂查询使用零遗传算法进行管理 
      • 支持可滑动可更新的结果集,支持大型结果集、支持结果集排序,支持方法返回结果集 
      • 支持数据库加密(使用AES或XTEA进行加密),支持SHA-256密码加密,提供加密函数,支持SSL
    

##H2服务模式
也就是远程连接模式,这种模式与其他数据库使用方式基本一致。

这种模式当然前提是要先启动H2服务器,这样客户端才能连接并执行SQL脚本。

这种模式是要比内嵌模式慢的,因为数据传输使用TCP/IP协议。

  • 该模式的数据库URL设定有两种:
  • Server mode (remote connections) using TCP/IP:
  •   jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>
      jdbc:h2:tcp://localhost/~/test
      jdbc:h2:tcp://dbserv:8084/~/sample
      jdbc:h2:tcp://localhost/mem:test 
    
  • Server mode (remote connections) using TLS:
  •   jdbc:h2:ssl://<server>[:<port>]/[<path>]<databaseName>
      jdbc:h2:ssl://localhost:8085/~/sample; 
    

##H2纯内存模式

当连接内存数据库的所有连接关闭之后,数据就会被清空。

为了维持数据,在URL后配置DB_CLOSE_DELAY=-1,会让它的生命周期同JVM一致。

  • 内存模式的数据库URL:
  •   jdbc:h2:mem:
      jdbc:h2:mem:<databaseName>
      jdbc:h2:mem:test_mem
      jdbc:h2:tcp://localhost/mem:db1
    

##H2嵌入模式
这种连接方式默认情况下只允许有一个客户端连接到H2数据库,有客户端连接到H2数据库之后,此时数据库文件就会被锁定,
那么其他客户端就无法再连接了。使用嵌入模式,不需要先启动h2的服务器,直接执行客户端即可。

然而实际应用场景,应该让多个客户端访问,比如WEB端查看数据,而不是针对单一客户端连接而进行数据库文件加锁。
为了多线程操作数据库,提高性能,在URL之后配置***AUTO_SERVER=TRUE***

本地测试相对路径建立文件没有成功!

  • 内嵌模式的数据库URL:
  •   jdbc:h2:[file:][<path>]<databaseName>
      jdbc:h2:~/test
      jdbc:h2:file:/data/sample
      jdbc:h2:file:C:/data/sample (Windows only)  
    

##内嵌模式实际应用
###下载
H2Database 下载独立于平台的版本Platform-Independent Zip
###解压
例:D:\DOWNLOADS\h2-2018-03-18\h2\bin
BIN 目录下有两个DOS下的批处理文件分别是h2.bat 和 h2w.bat
前者是使用命令行操作,后者有web页面进行操作,简单高效。

  • 登录选项例子如下设置:
  •   Driver Class:org.h2.Driver
      JDBC URL:jdbc:h2:file:C:/Users/Administrator/AppData/Local/Temp/h2/tickdata;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1
      User Name:
      Password:
    

设置完之后点击Test Connection即可。创建成功便可登录。

###语法部分
例:SELECT :point AS POINT, :prtview AS PRTVIEW, :date AS DATE, :value AS VALUE FROM DUAL;

使用ELSQL(或者PreparedStatement) 设置变量时,H2的SELECT语法解析器 不能识别 已取别名如POINT等的类型的。

  • 目前的这种解决方案—设置局部变量:
  •   SET @POINT = point; SET @PRTVIEW = prtview;
      SELECT @POINT AS POINT, @PRTVIEW AS PRTVIEW, @DATE AS DATE, @VALUE AS VALUE FROM DUAL;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值