当前位置: 首页 > article >正文

H2 Database IDEA 源码 DEBUG 环境搭建

H2 Database IDEA 源码 DEBUG 环境搭建

基于最新的 version-2.3.230 拉取分支。

git remote add h2 https://github.com/h2database/h2database.git 
git fetch h2
git checkout -b version-2.3.230 version-2.3.230

使用

# 启动
java -jar h2*.jar

# H2 shell 方式使用
java -cp h2-*.jar org.h2.tools.Shell

h2 shell

启动类 org.h2.tools.Shell

# 配置启动参数
-url "jdbc:h2:~/test" -user "sa" -password "" 

测试 case

create table + insert

Welcome to H2 Shell 2.3.230 (2024-07-15)
Exit with Ctrl+C
[Enter]   jdbc:h2:~/test
URL       jdbc:h2:~/test
[Enter]   org.h2.Driver
Driver    org.h2.Driver
[Enter]   
User      sa
Password  Password  ><
Type the same password again to confirm database creation.
Password><Password  ><
Connected
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exit

sql> show tables;
TABLE_NAME | TABLE_SCHEMA
(0 rows, 197 ms)

sql> create table test(id int);
(Update count: 0, 5 ms)

sql> show tables;
TABLE_NAME | TABLE_SCHEMA
TEST       | PUBLIC
(1 row, 4 ms)

sql> insert into test values(1);
(Update count: 1, 4 ms)

sql> select * from test;
ID
1
(1 row, 1 ms)

sql> 

事务操作

sql> select * from test;
ID
1
1
(2 rows, 2 ms)

sql> begin;
(Update count: 0, 1 ms)

sql> delete from test;
(Update count: 2, 1 ms)

sql> rollback;
(Update count: 0, 2 ms)

sql> select * from test;
ID
1
1
(2 rows, 2 ms)

H2架构

根据官方文档介绍,从上到下,各层如下所示:

JDBC driver.
    JDBC 驱动程序
Connection/session management.
    连接/会话管理
SQL Parser.
    SQL 解析器
Command execution and planning.
    命令执行和计划
Table/Index/Constraints.
    表/索引/约束
Undo log, redo log, and transactions layer.
    undo log、redo log 和 事务层
B-tree engine and page-based storage allocation.
    B 树引擎 & 基于页的存储分配
Filesystem abstraction.
    文件系统抽象

http://www.kler.cn/a/374133.html

相关文章:

  • 浅谈鸿蒙生态崛起的机遇
  • 3000字帮你彻底搞懂Java抽象类与接口的区别(含JDK8接口新增三种方法与丰富案例)
  • 深度学习数学基础之梯度
  • 《神经网络助力战场车辆及部件损毁识别与评估》
  • 达梦数据迁移工具DTS使用实践
  • 性能测试详解
  • VuePress文档初始化请求过多问题探讨
  • 设计模式07-结构型模式(装饰模式/外观模式/代理模式/Java)
  • HTB:Cicada[WriteUP]
  • 【Linux-进程间通信】匿名管道的应用-进程池实现+命名管道的应用ClientServer通信
  • 手机收银云进销存管理软件,商品档案Excel格式批量导入导出,一键导入Excel的商品档案
  • 跨可用区的集群k8s的基本操作和配置理解
  • 【开源免费】基于SpringBoot+Vue.JS网上订餐系统(JAVA毕业设计)
  • SQL 通用数据类型
  • 【数据库设计】规范设计理论之数据依赖的公理系统(1)
  • 百数功能更新——表单提交支持跳转到外部链接并支持传参
  • ssm基于WEB的人事档案管理系统的设计与实现+jsp
  • 【c++ gtest】使用谷歌提供的gtest和抖音豆包提供的AI大模型来对代码中的函数进行测试
  • WPF自定义日历控件Calendar 的方法
  • STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
  • 树莓派5调取本地视频
  • Spring Boot框架:校园社团信息管理的新选择
  • cmake编译时arch=compute_32,code=sm_32 -gencode 的含义
  • Java面试经典 150 题.P274. H 指数(011)
  • 【Hive sql面试题】找出连续活跃3天及以上的用户
  • 用示波器如何调方波?