精华内容
下载资源
问答
  • H2

    2014-06-19 13:20:36
    0、近期写了一个模拟英语哦该你 1、 H2简介(摘自H2官网:...Welcome to H2, the Java SQL database. Themain features of H2 are: Very fast, open source, JDBC API Embedded and server m

    0、近期写了一个模拟数据接口,不想采用大型数据库,于是在同事的推荐下用了H2,简要记录。

    1、  H2简介(摘自H2官网:http://www.h2database.com/html/main.html):

    Welcome to H2, the Java SQL database. Themain features of H2 are:

    • Very fast, open source, JDBC API
    • Embedded and server modes; in-memory databases
    • Browser based Console application
    • Small footprint: around 1.5 MB jar file size

    If 不想看英文:

     

               欢迎来到H2,java SQL数据库。H2主要特性如下:

    l  快速、开源、遵循JDBCAPI

    l  具有内嵌和服务器模式;内存数据库

    l  基于控制台应用的浏览器管理后台

    l  体积小,大约1.5MB。

     

    2、  下载地址:http://www.h2database.com/html/download.html

    3、  帮助文档:http://www.h2database.com/html/tutorial.html

    文档写的比较全面,如果有时间再发Demo。

     

    展开全文
  • h2-源码

    2021-03-30 17:04:33
  • H2-源码

    2021-03-28 18:18:49
  • H2 Database(H2内存数据库)

    千次下载 热门讨论 2013-08-15 23:55:53
    H2就不做很多介绍了。资源包内容列表是我进行H2预研是收集的H2资料,应该是最全面的的了: 1、h2.pdf (H2 API) 2、h2-1.3.173.jar (截止2013-8-15最新的H2.jar) 3、h2-2013-07-28.zip (截止2013-8-15最新的H2服务...
  • 深入理解h2和r2dbc-h2

    万次阅读 热门讨论 2020-11-20 09:51:49
    本文将会介绍R2DBC的H2实现r2dbc-h2的使用方法和要注意的事项。一起来看看吧。

    简介

    本文将会介绍R2DBC的H2实现r2dbc-h2的使用方法和要注意的事项。一起来看看吧。

    H2数据库简介

    什么是H2数据库呢?

    H2是一个Java SQL database,它是一个开源的数据库,运行起来非常快。

    H2流行的原因是它既可以当做一个独立的服务器,也可以以一个嵌套的服务运行,并且支持纯内存形式运行。

    H2的jar包非常小,只有2M大小,所以非常适合做嵌套式数据库。

    如果作为嵌入式数据库,则需要将h2*.jar添加到classpath中。

    下面是一个简单的建立H2连接的代码:

    import java.sql.*;
    public class Test {
        public static void main(String[] a)
                throws Exception {
            Connection conn = DriverManager.
                getConnection("jdbc:h2:~/test", "sa", "");
            // add application code here
            conn.close();
        }
    }
    

    如果给定地址的数据库并不存在,

    同时H2还提供了一个简单的管理界面,使用下面的命令就可以启动H2管理界面:

    java -jar h2*.jar
    

    默认情况下访问http://localhost:8082就可以访问到管理界面:

    r2dbc-h2

    r2dbc-h2是r2dbc spi的一种实现。同样的使用r2dbc-h2也提供了两种h2的模式,一种是文件系统,一种是内存。

    同时还提供了事务支持,prepared statements和batch statements等特性的支持。

    r2dbc-h2的Maven依赖

    要想使用r2dbc-h2,我们需要添加如下依赖:

    <dependency>
      <groupId>io.r2dbc</groupId>
      <artifactId>r2dbc-h2</artifactId>
      <version>${version}</version>
    </dependency>
    

    如果你体验snapshot版本,可以添加下面的依赖:

    <dependency>
      <groupId>io.r2dbc</groupId>
      <artifactId>r2dbc-h2</artifactId>
      <version>${version}.BUILD-SNAPSHOT</version>
    </dependency>
    
    <repository>
      <id>spring-libs-snapshot</id>
      <name>Spring Snapshot Repository</name>
      <url>https://repo.spring.io/libs-snapshot</url>
    </repository>
    

    建立连接

    h2有两种连接方式,file和内存,我们分别看一下都是怎么建立连接的:

    ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:h2:mem:///testdb");
    
    Publisher<? extends Connection> connectionPublisher = connectionFactory.create();
    
    ConnectionFactory connectionFactory = ConnectionFactories.get("r2dbc:h2:file//my/relative/path");
    
    Publisher<? extends Connection> connectionPublisher = connectionFactory.create();
    

    我们还可以通过ConnectionFactoryOptions来创建更加详细的连接信息:

    ConnectionFactoryOptions options = builder()
        .option(DRIVER, "h2")
        .option(PROTOCOL, "...")  // file, mem
        .option(HOST, "…")
        .option(USER, "…")
        .option(PASSWORD, "…")
        .option(DATABASE, "…")
        .build();
    
    ConnectionFactory connectionFactory = ConnectionFactories.get(options);
    
    Publisher<? extends Connection> connectionPublisher = connectionFactory.create();
    
    // Alternative: Creating a Mono using Project Reactor
    Mono<Connection> connectionMono = Mono.from(connectionFactory.create());
    

    上面的例子中,我们使用到了driver,protocol, host,username,password和database这几个选项,除此之外H2ConnectionOption中定义了其他可以使用的Option:

    public enum H2ConnectionOption {
    
        /**
         * FILE|SOCKET|NO
         */
        FILE_LOCK,
    
        /**
         * TRUE|FALSE
         */
        IFEXISTS,
    
        /**
         * Seconds to stay open or {@literal -1} to to keep in-memory DB open as long as the virtual machine is alive.
         */
        DB_CLOSE_DELAY,
    
        /**
         * TRUE|FALSE
         */
        DB_CLOSE_ON_EXIT,
    
        /**
         * DML or DDL commands on startup, use "\\;" to chain multiple commands
         */
        INIT,
    
        /**
         * 0..3 (0=OFF, 1=ERROR, 2=INFO, 3=DEBUG)
         */
        TRACE_LEVEL_FILE,
    
        /**
         *  Megabytes (to override the 16mb default, e.g. 64)
         */
        TRACE_MAX_FILE_SIZE,
    
        /**
         * 0..3 (0=OFF, 1=ERROR, 2=INFO, 3=DEBUG)
         */
        TRACE_LEVEL_SYSTEM_OUT,
    
        LOG,
    
        /**
         * TRUE|FALSE
         */
        IGNORE_UNKNOWN_SETTINGS,
    
        /**
         * r|rw|rws|rwd (r=read, rw=read/write)
         */
        ACCESS_MODE_DATA,
    
        /**
         * DB2|Derby|HSQLDB|MSSQLServer|MySQL|Oracle|PostgreSQL|Ignite
         */
        MODE,
    
        /**
         *  TRUE|FALSE
         */
        AUTO_SERVER,
    
        /**
         * A port number
         */
        AUTO_SERVER_PORT,
    
        /**
         * Bytes (e.g. 512)
         */
        PAGE_SIZE,
    
        /**
         * Number of threads (e.g. 4)
         */
        MULTI_THREADED,
    
        /**
         * TQ|SOFT_LRU
         */
        CACHE_TYPE,
    
        /**
         * TRUE|FALSE
         */
        PASSWORD_HASH;
    }
    

    当然还有最直接的database选项:

    r2dbc:h2:file//../relative/file/name
    r2dbc:h2:file///absolute/file/name
    r2dbc:h2:mem:///testdb
    

    我们还可以通过H2特有的代码H2ConnectionFactory来创建:

    H2ConnectionFactory connectionFactory = new H2ConnectionFactory(H2ConnectionConfiguration.builder()
        .inMemory("...")
        .option(H2ConnectionOption.DB_CLOSE_DELAY, "-1")
        .build());
    
    Mono<Connection> connection = connectionFactory.create();
    
    CloseableConnectionFactory connectionFactory = H2ConnectionFactory.inMemory("testdb");
    
    Mono<Connection> connection = connectionFactory.create();
    

    参数绑定

    在使用prepare statement的时候,我们需要进行参数绑定:

    connection
        .createStatement("INSERT INTO person (id, first_name, last_name) VALUES ($1, $2, $3)")
        .bind("$1", 1)
        .bind("$2", "Walter")
        .bind("$3", "White")
        .execute()
    

    除了$符号绑定之外,还支持index绑定,如下所示:

    Statement statement = connection.createStatement("SELECT title FROM books WHERE author = $1 and publisher = $2");
    statement.bind(0, "John Doe");
    statement.bind(1, "Happy Books LLC");
    

    批处理

    我们来看下r2dbc-h2是怎么来进行批处理的:

    Batch batch = connection.createBatch();
    Publisher<? extends Result> publisher = batch.add("SELECT title, author FROM books")
        .add("INSERT INTO books VALUES('John Doe', 'HappyBooks LLC')")
        .execute();
    

    事务和Savepoint

    r2dbc还支持事务和savepoint,我们可以在事务中rollback到特定的savepoint。具体的代码如下:

    Publisher<Void> begin = connection.beginTransaction();
    
    Publisher<Void> insert1 = connection.createStatement("INSERT INTO books VALUES ('John Doe')").execute();
    
    Publisher<Void> savepoint = connection.createSavepoint("savepoint");
    
    Publisher<Void> insert2 = connection.createStatement("INSERT INTO books VALUES ('Jane Doe')").execute();
    
    
    Publisher<Void> partialRollback = connection.rollbackTransactionToSavepoint("savepoint");
    
    
    Publisher<Void> commit = connection.commit();
    

    本文作者:flydean程序那些事

    本文链接:http://www.flydean.com/r2dbc-h2-in-depth/

    本文来源:flydean的博客

    欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

    展开全文
  • H2 Database

    2016-11-07 22:40:04
    H2 Database
  • H2HC杂志 H2HC杂志
  • H2是一个Java编写的关系型数据库,它可以被嵌入Java应用程序中使用,或者作为一个单独的数据库服务器运行。
  • r2dbc-h2:R2DBC H2实现
  • H2数据库攻略

    2021-03-02 00:13:58
    H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库...
  • h2-demos Demos of H2 Database Engine. 有关 H2 数据库的示例. 本项目所有示例均使用 Maven 项目管理。 How to 如何使用 Checkout Demos 检出项目 git clone https://github.com/waylau/h2-demos.git import the ...
  • JPA+H2内嵌数据库

    万次阅读 2020-06-04 13:47:45
    开发个人项目的时候有时候会遇到,用数据库过于麻烦,这时候内嵌一个H2是一个不错的选择。 更何况H2提供管理控制台界面,可以直接执行Sql语句 项目里要内嵌H2的话需要引入H2的依赖 <dependency> <...

    开发个人项目的时候有时候会遇到,用数据库过于麻烦,这时候内嵌一个H2是一个不错的选择。

    更何况H2提供管理控制台界面,可以直接执行Sql语句

    项目里要内嵌H2的话需要引入H2的依赖

      <dependency>
         <groupId>com.h2database</groupId>
         <artifactId>h2</artifactId>
         <version>1.4.197</version>
     </dependency>

    版本选择上是因为比较新的H2不会自动建库 这是能自动建库里的比较新的版本[不知道以后会不会回归这一特性]

    用的是SpringBoot + Jpa的项目 yml配置如下

    其中 /console 指的是项目路径/console 这个地址会变成H2的Web管理地址  

    当然也可以DataGrip去连接 但是一般来说没有必要

    spring:
      datasource:
        url: jdbc:h2:tcp://0.0.0.0:9092/./rest
        platform: h2
        username: sa
        password: rest
        driverClassName: org.h2.Driver
      jpa:
        database-platform: org.hibernate.dialect.H2Dialect
        hibernate:
          ddl-auto: update
        properties:
          hibernate:
            show_sql: false
            use_sql_comments: true
            format_sql: true
      h2:
        console:
          enabled: true
          path: /console
          settings:
            trace: false
            web-allow-others: true
    server:
      port: 5555
    
    

    启动H2的话需要调用H2 tools包

    直接正则读取配置文件application.yml里面数据源的配置 用H2生成一个数据库 然后JPA直接连接 

    代码如下

    package com.binary.rest;
    
    import org.h2.tools.Server;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    @SpringBootApplication
    public class RestApplication {
        private static final Logger log = LoggerFactory.getLogger(RestApplication.class);
    
        static {
            try {
                InputStream inputStream = RestApplication.class.getClassLoader().getResourceAsStream("application.yml");
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                String line = null;
                while ((line = (reader.readLine())) != null) {
                    if (line.matches(".*jdbc:h2:tcp:.*")) {
                        String port = line.replaceAll("^.*tcp://.*?:(\\d+)/.*$", "$1");
                        Server server = Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort",
                                port);
                        log.info("启动H2数据库.... {}", line);
                        server.start();
                    }
                }
            } catch (Exception e) {
                log.error("启动H2服务报错 ... {}", e.getMessage());
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
    
            SpringApplication.run(RestApplication.class, args);
        }
    
    }
    

    这样的话能比迅捷的开发个人项目,部署也比较方便

    完整项目地址放在码云仓库 https://gitee.com/1772766657/H2AndJpaTest.git

    展开全文
  • H2 database

    2014-06-16 15:12:28
    H2数据库,非常好的内存数据库。 H2的优势: 1、h2采用纯Java编写,因此不受平台的限制。 2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。 3、性能和功能的优势 H2比HSQLDB的最大的优势就是h2提供了一个十分...
  • h2数据库工具

    2019-05-05 17:01:43
    h2数据库工具~
  • h2笔记

    万次阅读 2020-09-02 17:56:02
    【1】H2介绍 【2】SpringBoot使用H2内嵌数据库 【1】H2介绍 H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。 ###运行模式与运行方式 1.内嵌模式(Embedded Mode)  内嵌模式...

    【1】H2介绍
    【2】SpringBoot使用H2内嵌数据库


    【1】H2介绍

    H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
    
    ###运行模式与运行方式
    1.内嵌模式(Embedded Mode)
      内嵌模式下,应用和数据库同在一个JVM中,通过JDBC进行连接。 可持久化,但同时只能一个客户端连接。内嵌模式性能会比较好。
    2.服务器模式(Server Mode)
      使用服务器模式和内嵌模式一样,只不过它可以跑在另一个进程里。
    3.混合模式
      第一个应用以内嵌模式启动它,对于后面的应用来说它是服务器模式跑着的。混合模式是内嵌模式和服务器模式的组合。
        第一个应用通过内嵌模式与数据库建立连接,同时也作为一个服务器启动,于是另外的应用(运行在不同的进程或是虚拟机上)可以同时访问同样的数据。
        第一个应用的本地连接与嵌入式模式的连接性能一样的快,而其它连接理论上会略慢。 
    

    【2】SpringBoot使用H2内嵌数据库
    参考链接
    SpringBoot2

    展开全文
  • AXCTRNM.H2 AXCTRNM.H2

    2011-11-21 16:36:11
    AXCTRNM.H2 AXCTRNM.H2 AXCTRNM.H2
  • H2数据库包

    2019-04-24 08:48:36
    H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容。H2还提供兼容模式,可以兼容一些主流的数据库,因此采用H2作为开发期的数据库...
  • H2地理信息系统 按照的精神,H2GIS是数据库引擎的空间扩展。 它增加了对管理新H2 Geometry类型的空间特征和操作,支持(OGC)(SFSQL)函数以及我们( )开发的其他空间函数的支持。 H2GIS是新的数据管理库的根...
  • 方糖氢小说阅读器 :warning: 已经更新为V2,内置了头像和小说元信息,不再兼容之前的格式, ...氢小说(H2 Book)是一种对话体、类剧本式的图书格式。...然后将之前下载 *.h2book 文件改名为 2.h2zip 放入 public/books
  • H2数据库资源

    2019-02-28 13:42:23
    数据库用户操作: --创建用户 ...数据库连接url:jdbc:h2:tcp://localhost:1551/D:/h2_db/h2_1.4.196/db/sg 描述:D:/h2_db/h2_1.4.196/db为文件配置的数据库文件路径,sg为数据库文件名称,可自定义
  • h2-functions-4-mysql H2 MySQL的用户定义函数。 为什么要这个项目? 我总是使用H2进行单元测试,而不是使用真正MySQL(Docker),但是某些MySQL函数在H2中不可用。 因此,我创建了这个项目来为MySQL定义一些功能...
  • H2database

    2015-07-07 13:38:10
    H2数据库,jar包导入项目即可以使用。网上很多应用实例。内置数据库速率快!
  • h2d2AleviRou

    2019-10-24 08:01:21
    h2d2AleviRou
  • h2gis是h2数据库的空间扩展
  • H2 Database 教程

    2018-02-28 13:44:05
    H2 Database 教程》高清电子版+书签 《H2 Database 教程》高清电子版+书签
  • h2数据库引擎开发文档h2.pdf Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console...
  • h2 数据库 客户端

    2016-11-24 09:57:57
    h2 数据库 客户端
  • H2; JPA start.spring.io Gradle : Java : -> H2, JPA, Rest application.properties spring.h2.console.enabled=true 启动应用 gradle bootRun 打开H2控制台 localhost:8080/h2-console 添加一个JPA实体和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 363,048
精华内容 145,219
关键字:

h2