前言 在对dao层写测试类的时候,我们需要一个测试数据库,一般我们会是专门建立一个真实的测试数据库,但是有了HSQLDB事情就变得简单了起来。 正题 一、简介: hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使用Java编程的话,

前言 在对dao层写测试类的时候,我们需要一个测试数据库,一般我们会是专门建立一个真实的测试数据库,但是有了HSQLDB事情就变得简单了起来。

正题 一、简介: hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使用Java编程的话,不妨考虑一下使用它,相对其他数据库来说,其体积小,才563kb。仅一个hsqldb.jar文件就包括了数据库引擎,数据库驱动,还有其他用户界面操作等内容。在Java开源世界里,hsql是极为受欢迎的(就Java本身来说),JBoss应用程序服务器默认也提供了这个数据库引擎。由于其体积小的原因,又是纯Java设计,又支持SQL99,SQL2003大部分的标准,所以也是作为商业应用程序展示的一种选择。

二、优点

1.轻巧,只有600多K,运行速度非常快。结合Hibernate数据库无关的特性,非常适合在项目开发的时候使用。

2.作为单元测试数据库。单元测试的时候,启动HSQLDB的file模式,数据不存盘,可以保证测试原子性。

3.来回复制,随身携带。

4.不需要安装,使用非常方便。

5.稳定,而且支持的数据量足够大。

6.小型项目作为现场数据库使用,不需要安装Oracle之类的大型DB,减轻了维护成本,并且,HSQLDB非常容易备份。

三、局限性

1.HSQLDB并不是一个正式的数据库产品,如果用来做为商业应用数据库或者说开发时的数据库,不太妥当。这点在HSQLDB的官方文档里也提到了。

2.作为测试数据库来讲,由于HSQLDB支持标准SQL, 所以一般情况没问题,但是对于某个数据(如MySql)的特殊语法则不兼容,容易报错。

四、作为测试数据库的使用 作为测试数据库的话,主要用于测试与数据有交互的类,即我们平时所讲的dao层。 HSQLDB使用很简单,只需要从官网下载最新版本的zip包然后解压放到lib目录下即可(当然maven项目需要添加到pom.xml中进行引用),然后需要一个配置文件 两个sql文件和一个测试类即可。

测试类:

package com.demandforce.dao;

import java.util.Collection;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.util.Assert;

import com.demandforce.model.TextMessageTemplate;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = {"classpath:context/hyperSqlContext.xml"})

public class TextMessageTemplateRetrievalTest {

@Autowired

private TextMessageTemplateDao textMessageTemplateDao;

@Test

public void testSelectByBusinessCategory() {

Collectiontmts = textMessageTemplateDao.selectByBusinessCategory( 203, 0);

Assert.notNull(tmts);

Assert.isTrue(tmts.size() == 2);

}

}

hyperSqlContext.xml

setup.sql

--

-- MySQL compatibility mode for Hyper SQL

SET DATABASE SQL SYNTAX MYS TRUE;

schema-create.sql

DROP TABLE IF EXISTS TextMessageTemplate;

CREATE TABLE TextMessageTemplate (

ID INT NOT NULL AUTO_INCREMENT,

BusinessID INT NOT NULL,

Type INT NOT NULL,

Template varchar(1000),

CreatedDate datetime DEFAULT NULL,

LastModifiedDate timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

CreatedUserId INT DEFAULT 0,

LastModifiedUserId INT DEFAULT 0,

Delivery INT DEFAULT 0,

DeliveryWindow INT DEFAULT 1,

BusinessCalendar INT NOT NULL DEFAULT 0,

DeliveryTime datetime DEFAULT NULL,

CardCount INT DEFAULT 0,

Segment INT DEFAULT 0,

FrontImage varchar(255) DEFAULT NULL,

IncludeItems INT DEFAULT 1,

IncludeReview INT DEFAULT 1,

IncludeCoupon INT DEFAULT 1,

services varchar(5000) DEFAULT NULL,

Industry INT DEFAULT NULL,

PRIMARY KEY (ID)

);

data-insert.sql

INSERT INTO TextMessageTemplate (BusinessID, Type, Template, Industry)

VALUES ('0', '203', 'Template1', null);

INSERT INTO TextMessageTemplate (BusinessID, Type, Template, Industry)

VALUES ('0', '204', 'Template2', null);

小结: 虽然HSQLDB有一定的局限性,但是还是不得不说在某些情况下它是一个不错的测试数据库的选择。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

hsql mysql_HSQL简介相关推荐

  1. 【转】ibatis的简介与初步搭建应用

    [转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...

  2. ibatis的简介与初步搭建应用

    一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完以后发现Hibernate体系中的内容真 ...

  3. hsqldb 使用简介

    hsqldb 使用简介 hsqldb 是一个非常简单的数据库.在实际开发中,有时开发.测试数据库暂时不可获得,可以使用hsql在本地进行调试.不必等数据库资源而影响开发进度.本文将简单介绍spring ...

  4. hsql数据库使用详解(入门)及快速使用

    一.简介: hsql数据库是一款纯Java编写的免费数据库,许可是BSD-style的协议,如果你是使用Java编程的话,不凡考虑一下使用它,相对其 他数据库来说,其体积小,才563kb.仅一个hsq ...

  5. JBoss内置的HSQL DB数据库

    JBoss使用的默认数据库是纯java数据库Hypersonic.这个数据库的配置信息位于hsqldb-ds.xml文件中,可见是作为一个JBOSS应用加载的.数据库可以加载在内存中.数据库文件存放在 ...

  6. MyBatis-Plus简介

    文章目录 一. 简介 二. 特性 三. 支持数据库 四. 框架结构 五. 入门案例 1. 创建数据库及表 2. 创建Spring Boot工程 3. 引入依赖 4. 编写代码 4.1 配置applic ...

  7. Spring简介及历史

    Spring简介 Spring 在起源可以追溯到 Rod Johnson 于2002年出版的<Expert One-to-One J2EE Design and Development>一 ...

  8. Groovy和Grails简介

    Groovy和Grails简介(对抗ruby的j2ee框架) 摘要 Java Web应用程序框架是企业Java得以成功的重要原因之一.人们怀疑如果没有Apache Struts框架Java EE是否能 ...

  9. java开源工具简介(2)

    java开源工具简介(2) OpenCms [Java开源 CMS系统] OpenCms是一个J2EE的产品,它是用Java写成的.它和Tomcat捆绑在一起.但是也能够使用ATG Dynamo.We ...

  10. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

最新文章

  1. Angular reducer第一次被框架调用的单步调试细节
  2. [C++STL]C++实现unordermap容器和unorderset容器
  3. python queue windows_python Queue模块
  4. vue伸缩效果_Vue2(三)实现子菜单展开收缩,带动画效果实现方法
  5. C语言第五次作业--数据类型
  6. SCWS中文分词,向xdb词库添加新词
  7. android打包方法超过65k错误
  8. CSS3导入字体后用另外一种索引去加载字体里面的字符的问题。
  9. UVALive - 5713 最小生成树
  10. bzoj 2194: 快速傅立叶之二 FFT
  11. python迭代器和生成器_python迭代器和生成器
  12. CAD用直线绘制矩形
  13. 股票爬取接口如何获取股票实时行情数据?
  14. nuc10fnh寒霜峡谷linux,英特尔(Intel)寒霜峡谷NUC10i5FNH使用体验
  15. 虚拟桌面和云桌面办公系统
  16. web前端培训班有哪些
  17. stm32核心板可以点亮灯吗_二、STM32的GPIO输出操作
  18. 交换机和路由器技术-13-三层交换
  19. 中科院、华为等提出Vision GNN,只使用图神经网络进行视觉任务
  20. The 2021 ICPC Asia Shanghai Regional Programming Contest 2021ICPC上海站VP

热门文章

  1. 3D制图软件中怎么设计凸轮?3D设计凸轮教程
  2. C++和ASM文件的互相调用
  3. Linux中文显示乱码问题
  4. java 程序计数器_JVM入门系列之程序计数器
  5. 教师要合理使用计算机,教师职称计算机考试题库
  6. PCL八叉树的包围盒研究
  7. 高中 信息科技 计算机网络 课件,初中信息技术课件第一课--认识计算机网络.ppt...
  8. 计算机不同领域划分依据,计算机文化基础真题(七)
  9. caxa计算机绘图工程师,CAXA计算机绘图
  10. 能测试经纬度的软件,经纬度转换工具(适用多种测试软件)