`
bruce008
  • 浏览: 172233 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HSQL 内存数据库在unit test 中的使用

阅读更多

如果我们项目采用 Hibernate  访问DB2/Oracle 的应用需要做unit test。 应该怎么做呢?

一种  是 连真实的db2 的数据库, 每一个需要数据库访问的  unit  test 放到 transaction 中 , 在unit test After 方法中  rollback  所做的 transaction,  保证数据库clean。

 

另外一种是连H2  或者 HSql 之类的内存数据库,  每一个unit test 都是干净的数据库。  这两种方法应该将各有利弊,  采用相同类型的数据库, 如果 unit test 失败 或者 unit test 之间可能会造成 干扰,  而内存数据库呢毕竟是不同类型。 涉及到DAO 中要采用 特定数据库的特性就不行了。   比如现有项目是访问 DB2数据库, 在插入或者修改业务数据表时 会通过触发器 在业务表的audit 表中增加audit 数据。  这个用内存数据库就得不到相同的结果。  

 

各有利弊也得选啊,  客户选择了用HSQL 来做 db unit test。  跟 HSQL 做 unit test 的最佳拍档 是 dbunit。  我们可以准备好  DDL 来创建表结构。 数据呢, 通过把DB2中的 数据导出到 xml 中  ,  dbunit 可以将一个xml 文件看成一个dataset。   这点跟 dotNet 中的 ADO.NET 比较相似, 一个dataset 中 也可以指定多个表的数据。但是这有个缺点, 如果数据量大了, 性能就很差, 原因当然是xml document 的解析效率太差。 我现在是采用了自己生成insert sql 语句。 然后利用 HSql 的 org.hsqldb.cmdline.SqlFile  可以很方便的执行一个sql 文件。 采用这种方式, 基本上可以将测试数据库里面的所有测试数据倒出来 几千 上万条数据, 100 多张表 也就 10几秒钟 搞定到内存。

 

 

在使用hsql jar 包的时候碰到一个问题, 主键用 identity 类型 的时候 只有 1.8 版本的 不支持 Hibernate  的 getGeneratedkey, 会抛出一个错误, 换成 2.2.6 之后 OK。

 

 

目前做了两个 utiltiy 类 : 一个是生成表的 ddl,  一个是 生成 指定表的 insert sql。 ddl 可以所有表都放到一个文件, 而数据可以做成 一张表一个文件, 并且在具体的test 之间有开发人员之间加。  ddl 则放到 test 基类每次加载。 

分享到:
评论

相关推荐

    如何使用hsql数据库

    如何使用hsql数据库

    hsql-file数据库的java简单调用实现

    在文件模式下,数据库的数据和元数据存储在磁盘文件中,这使得数据在数据库服务关闭后仍能持久化。 描述中提到,此实现是基于JDK 1.6,这意味着代码将兼容Java 6及更高版本,并且使用了Maven作为项目构建和依赖管理...

    hsql数据库详细教程.pdf

    4. Standalone 模式:不能通过网络来访问数据库,主要是在一个 JVM 中使用。那样的话,访问的速度会更加快。使用Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb", "sa", "");命令来创建连接...

    HSQL数据库下载

    HSQL数据库,全称为HyperSQL Database,是一款轻量级、高性能、完全开源的Java数据库管理系统。它被设计为一个嵌入式数据库,适用于各种应用程序,同时也支持客户端/服务器模式,可以作为独立的数据库服务器使用。...

    hsql数据库,体积最小的数据库,使用最方便的数据库

    hsql数据库,体积最小的数据库,使用最方便的数据库,不用安装,解压就能用,携带方便

    Hsqldb-java-connection:在Java编程中使用Hsql(内存数据库)数据库

    由于其内存模式,HSQLDB可以在不需安装任何服务器的情况下运行,直接在Java应用程序内部使用,极大地简化了开发流程。 ### 一、HSQLDB的主要特点 1. **完全Java实现**: HSQLDB是100%的Java语言编写,可以在任何...

    Spring数据库访问(HSQL)(三)

    在本篇博文中,我们将深入探讨Spring框架在数据库访问方面的应用,特别关注使用HSQL内存数据库的实践。HSQL数据库是一种轻量级的关系型数据库管理系统,适用于开发测试和快速原型设计,因为它不需要独立服务器进程,...

    有关hsql处理文本数据库的笔记

    在本篇笔记中,我们将探讨如何使用HSQL处理文本数据库,特别是如何导入和操作CSV文件。 首先,HSQL提供了方便的方式来创建一个基于文本的数据库。在命令行或通过Java API,你可以启动一个HSQL数据库引擎,并定义一...

    收集的全部HSQL DataBase资料(HSQL DataBase-关于Java 的纯数据库)

    下面将详细介绍HSQL Database在Java中的使用及相关知识点。 一、HSQL Database的特点 1. **轻量级**: HSQL Database占用资源少,启动快速,尤其适合于内存模式下的应用,如单元测试。 2. **完全SQL支持**: 支持SQL:...

    Spring数据库访问(HSQL)(四)

    在本篇博文中,我们将深入探讨Spring框架在数据库访问方面的应用,特别关注使用HSQL内存数据库的实践。Spring是Java领域最广泛使用的轻量级框架之一,它为开发者提供了全面的事务管理、数据访问集成以及IoC...

    嵌入式数据库hsql

    This package contains the latest release 1 of HSQLDB 1.7.3 HSQLDB is a relational database engine and a set of tools written in Java. ... Documentation and license information can be found in the /doc ...

    HSQL数据库2.2.5

    1. 内存模式:HSQLDB能在内存中创建数据库,这使得它非常适合用于快速原型开发和测试环境,无需进行繁琐的磁盘I/O操作,数据处理速度极快。 2. 单机模式:在单机模式下,HSQLDB可以作为单用户或多个用户同时访问的...

    HSQL安装部署使用手册

    如果你需要在Web应用中使用HSQL,可以将数据库文件复制到Web应用的`WEB-INF`目录下,并将`hsqldb.jar`添加到`WEB-INF/lib`目录,确保Web服务器能够访问到。 ### 七、配置数据源 在你的`applicationcontext.xml`...

    hqldb数据库在java程序中以内存方式启动

    标题 "hqldb数据库在java程序中以内存方式启动" 指的是使用HyperSQL Database (HSQLDB) 这个轻量级、开源的关系型数据库系统,在Java应用程序中以内存模式运行。HSQLDB因其快速、高效且易于集成的特点,常被用作开发...

    hsql可视化工具

    无论是在开发环境中快速搭建数据库,还是在教学场景中演示数据库概念,都是十分实用的选择。通过这个工具,你可以更直观地查看和操作数据库,进行数据管理、查询优化以及性能调试等工作,进一步提升你的数据库管理...

    Unit Test by Spring+HSQLDB

    NULL 博文链接:https://gavin2lee.iteye.com/blog/2052929

    HSQL DB 在Web 应用下使用方法

    在Web应用中使用HSQL DB,可以为开发和部署提供便捷的数据存储解决方案。 ### 一、安装与配置 1. **下载HSQL DB**: 你可以从官方网站(http://hsqldb.org/)获取最新版本的HSQL DB,通常包含jar文件,如`hsqldb....

Global site tag (gtag.js) - Google Analytics