Hsqldb与Spring集成

sumary

分别在服务端和客户端进行配置。由于要与Spring集成作为内置数据库,此处以Server模式运行。

Hsql Server模式配置

在类路径下防止hsqldb服务器端配置文件:

例如 resources/properties/hsqldb.properties
server.database.0=test
server.dbname.0=test
server.remote_open=true
hsqldb.reconfig_logging=false
server.port=8082

代码示例:

package com.xanthus.plugin;

import org.hsqldb.Server;
import org.hsqldb.persist.HsqlProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.SmartLifecycle;

import java.io.InputStream;
import java.util.Properties;

public class InternalDb implements SmartLifecycle {
    private final Logger logger = LoggerFactory.getLogger(InternalDb.class);
    private Server server;
    private boolean running = false;


    @Override
    public boolean isRunning()
    {
        if(server != null)
            server.checkRunning(running);
        return running;
    }

    @Override
    public void start()
    {
        if(server == null)
        {
            logger.info("Starting HSQL server...");
            server = new Server();
            try
            {
                Properties prop=new Properties();
                InputStream is = this.getClass().getResourceAsStream("/properties/hsqldb.properties");
                prop.load(is);
                HsqlProperties properties=new HsqlProperties(prop);
                server.setProperties(properties);
                server.start();
                running = true;
            }catch (Exception e)
            {
                logger.error("Error starting HSQL server.", e);
                stop();
            }
        }
    }

    @Override
    public void stop()
    {
        logger.info("Stopping HSQL server...");
        if(server != null)
        {
            server.stop();
            running = false;
        }
    }

    @Override
    public int getPhase()
    {
        return 0;
    }

    @Override
    public boolean isAutoStartup()
    {
        return true;
    }

    @Override
    public void stop(Runnable runnable)
    {
        stop();
        runnable.run();
    }
}

由于实现了SmartLifecycle接口,此类会被加入到tomcat的生命周期管理。启动过程中,启动hsqldb服务器。作为嵌入式服务器使用。

在Spring中配置jdbc连接信息

在配置文件中加入以下数据源配置信息

srping.datasource.druid.driver=org.hsqldb.jdbcDriver
srping.datasource.druid.url=jdbc:hsqldb:hsql://localhost:8082/test
srping.datasource.druid.user=sa
srping.datasource.druid.password=
srping.datasource.druid.version=2.4.1

tomcat驱动容器过程中,会看到如下日志打印,表示hsqldb与Spring集成成功。

[Server@2c52d89e]: Initiating startup sequence...
[Server@2c52d89e]: Server socket opened successfully in 2 ms.
[Server@2c52d89e]: Database [index=0, id=0, db=file:test, alias=test] opened successfully in 441 ms.
[Server@2c52d89e]: Startup sequence completed in 446 ms.
[Server@2c52d89e]: 2020-11-22 10:56:20.076 HSQLDB server 2.4.1 is online on port 8082
[Server@2c52d89e]: To close normally, connect and execute SHUTDOWN SQL
[Server@2c52d89e]: From command line, use [Ctrl]+[C] to abort abruptly

需要注意的是,此处有个version配置,也就是hsqldb坐标的版本信息。建议配置上,在调试过程中有出现报错.不明所以(需要查看源码自行研究)。

HSQLDB server version is '2.4.1'  \ client version '175.-14.26.18' is not compatible.

连接服务器,写入sql,创建表和数据

找到hsqldb jar包所在的路径。运行指令启用可视化界面.也可以参照官方文档创建批处理指令runmanager.bat或者runManager.sh。启用之后看到如下界面:

java -cp ./hsqldb-2.4.1.jar org.hsqldb.util.DatabaseManager

在这里插入图片描述
经过几次尝试,用户名只能用超级用户sa或者SA,不区分大小写。密码为空,点击OK登录。创建新用户也登录不进去,算了就这样吧。
在这里插入图片描述
进去之后看到控制台的界面,坐标是表信息,点击可以看到字段基本信息。其他的就没有了。右边文本框用于数据sql,点击execute执行。sql中的字段和表需要用双引号引起来,不然用mybatis驱动去查数据找不到。(默认不引起来,会变成大写,建议还是引用起来)

create table "student" (
    "id" int IDENTITY,
    "name" varchar(64),
    "age" int,
    "class_id" int,
    primary key("id")
);
comment on column "student"."class_id" is '所在班级id';
insert into "student" ("name","age","class_id") values ('李斯',12,14);
insert into "student" ("name","age","class_id") values ('高渐离',16,13);
insert into "student" ("name","age","class_id") values ('胜七',18,12);

项目搭建与一般的mvc并无区别。写个Controller去访问一把,看看效果。我用的@pathvariable,根据个人爱好可以自己选择传参方式。

在这里插入图片描述

DONE。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值