HS数据库_hsqldb

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言 在对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有一定的局限性,但是还是不得不说在某些情况下它是一个不错的测试数据库的选择。

f68f2add0b68e4f9810432fce46917b7.png

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190585.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java的输入输出格式

    java的输入输出格式不是特别完整和齐全,自己的一些小感悟,希望能帮助大家。对新手很友好,哈哈哈。输入:Scannerin=newScanner(System.in);新创建一个输入的Scanner对象,然后赋值给in,这个作用就是获取控制台的输入!!!in.nextInt()表示读入一个整数inta;表示定义一个变量a=in.nextInt();表示读入了一个数,把右边输入的值赋值给a。这里注意有一些规则,我们可以看到后面的类型名称首字母大写,大家可以记住这个小tip,养成好的代码风

  • 2019最新Android面试题「建议收藏」

    2019最新Android面试题「建议收藏」金三银四到来了,找工作的好时候到了,小伙伴们是不是都在忙着找工作呢,小弟前一阵也是忙着在找工作,面试了好多公司,所幸的是进到了自己心仪的公司,也是很幸运的。下面我将自己亲身实战的面试题及收到的面试题总结并分享答案出来。欢迎各位大哥指导、指点。下面这些只是Android方面的知识,如果有需要Java方面的面试题的话,可以在下面留言。1.Activity生命周期(这个是必问的)onCrea…

  • 注解式elasticsearch+SpringBoot(附分布式配置)

    注解式elasticsearch+SpringBoot(附分布式配置)前言:以前使用的是RestHighLevelClient客户端,使用起来一大堆的类相互嵌套,特别是agg操作,代码十分惨烈。架构:使用方式与mybatis类似,采用xml的形式,将dsl与代码分离。示例用了swagger2和lombok。需知:必须学会DSL语法(看半小时差不多就会了吧)。依赖:<dependency><group…

    2022年10月27日
  • js字符串转date类型_java字符串转double

    js字符串转date类型_java字符串转double//字符串转日期时间格式getDate(strDate){vardate=eval(‘newDate(‘+strDate.replace(/\d+(?=-[^-]+$)/,function(a){returnparseInt(a,10)-1;}).match(/\d+/g)+’)’);returndate;},

  • MATLAB新手教程

    MATLAB新手教程

    2021年12月14日
  • iptable详解概念

    iptable详解概念分享一个朋友的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开docker/kubernetes入门视频教程(腾讯内推)联系微信更多iptable系列文参考(转载于):http://www.zsythink.net/archives/tag/iptables/防火墙相关概念此处先描述一些相关概念。从逻辑上讲。防火墙可以大体分为主机防火墙和网络…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号