热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

H2数据库攻略之三-结合Maven

上一节我们介绍了H2database是什么以及简单的应用,本文将进一步深入,将H2应用到以Maven管理的项目中。一、引入Maven依赖在maven中定义H2数据库的版本属性&l

上一节我们介绍了H2database是什么以及简单的应用,本文将进一步深入,将H2应用到以Maven管理的项目中。

一、引入Maven依赖
在maven中定义H2数据库的版本属性


    1.3.172

添加H2依赖


    com.h2database
    h2
    ${h2.version}
    test

二、运行方式

1、在内存中运行
数据库只在内存中运行,关闭连接后数据库将被清空,适合测试环境

连接字符串:

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

如果不指定DBName,则以私有方式启动,只允许一个连接

2、嵌入式
数据库持久化存储为单个文件

连接字符串:

jdbc:h2:file:~/.h2/DBName;AUTO_SERVER=TRUE

~/.h2/DBName表示数据库文件的存储位置,如果第一次连接则会自动创建数据库

3、服务模式
H2支持三种服务模式:

web server:此种运行方式支持使用浏览器访问H2 Console
TCP server:支持客户端/服务器端的连接方式
PG server:支持PostgreSQL客户端
启动tcp服务连接字符串示例:

jdbc:h2:tcp://localhost/~/test 使用用户主目录

jdbc:h2:tcp://localhost//data/test 使用绝对路径

4、连接字符串参数
DB_CLOSE_DELAY:要求最后一个正在连接的连接断开后,不要关闭数据库
MODE=MySQL:兼容模式,H2兼容多种数据库,该值可以为:DB2、Derby、HSQLDB、MSSQLServer、MySQL、Oracle、PostgreSQL
AUTO_RECOnNECT=TRUE:连接丢失后自动重新连接
AUTO_SERVER=TRUE:启动自动混合模式,允许开启多个连接,该参数不支持在内存中运行模式
TRACE_LEVEL_SYSTEM_OUT、TRACE_LEVEL_FILE:输出跟踪日志到控制台或文件, 取值0为OFF,1为ERROR(默认值),2为INFO,3为DEBUG
SET TRACE_MAX_FILE_SIZE mb:设置跟踪日志文件的大小,默认为16M
5、启动服务模式,打开H2 Console web页面
启动服务,在命令行中执行

java -cp h2*.jar org.h2.tools.Server

执行如下命令,获取选项列表及默认值

java -cp h2*.jar org.h2.tools.Server -?

常见的选项如下:

-web:启动支持H2 Console的服务
-webPort :服务启动端口,默认为8082
-browser:启动H2 Console web管理页面
-tcp:使用TCP server模式启动
-pg:使用PG server模式启动
此外,使用maven也可以启动H2服务



    1.0.0
    1.0.0
    groupid
    h2-console
    H2 Console
    pom

    
        1.3.172
    

    
        
            com.h2database
            h2
            ${h2.version}
            runtime
        
    

    
        
            
                org.codehaus.mojo
                exec-maven-plugin
                
                    
                        
                            java
                            
                    
                
                
                    org.h2.tools.Server
                    
                        -web
                        -webPort
                        8090
                        -browser
                    
                
            
        
    

在命令行中执行如下命令启动H2 Console

mvn exec:java

或者建立一个bat文件

@echo off
call mvn exec:java
pause

此操作相当于执行了如下命令:

java -jar h2-1.3.168.jar -web -webPort 8090 -browser

三、应用程序配置

1、Properties配置
java应用程序关于数据库的Properties配置文件示例如下:

#h2 database settings
jdbc.driver=org.h2.Driver
jdbc.url=jdbc:h2:file:~/.h2/quickstart;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1
jdbc.username=sa
jdbc.password=sa

#connection pool settings
jdbc.pool.maxIdle=5
jdbc.pool.maxActive=40

2、初始化数据库
(1)、在Maven中初始化数据库

可以创建一个Profile,专门用于初始化数据库。在maven中可以通过maven-antrun-plugin执行ant任务,在ant任务中使用sql标签可以执行sql脚本文件,配置示例如下:

    
        refresh-db
        
            
                
                    org.apache.maven.plugins
                    maven-antrun-plugin
                    
                        
                            
                            
                                
                                
                                
                            
                        
                    
                
            
        
    

执行如下命令调用该Profile,初始化数据库

mvn antrun:run -Prefresh-db

(2)、在Spring中初始化数据库

Spring Profile和maven profile一样,也可以模拟不同的开发环境。在Spirng中可以通过jdbc:initialize-database初始化数据库,配置示例如下


        

    
    
        
        
        
        
    

    
    
        
        
    


推荐阅读
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
author-avatar
拍友2502902623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有