不记得是哪个在坛子里推荐过h2 database, 当时的印象就是Embedded 模式下性能很好,不过我用hsqldb之类完全是为了测试和方便,对速度倒是没什么要求,就没太留意。
今天去h2 database的首页, 把Tutorial 和 Features看了看, 发现h2还真的好用, 功能很强大。
除了跟hsqldb一样, 有server,Embedded ,in-memory模式之外, 它还有一个很不错的web端的console,启动也很简单只需要运行/bin/h2.bat。
Server模式,更是可以在程序中启动:
import org.h2.tools.Server;
...
// start the TCP Server
Server server = Server.createTcpServer(args).start();
...
// stop the TCP Server
server.stop();
对于hibernate也是支持的,不过我看到hibernate3.2中并没有对应h2的dialect,还好h2的源代码中提供了:
引用
For versions where the dialect is missing, you need to copy the file into the folder src\org\hibernate\dialect (Hibernate 3.1), rename it to H2Dialect.java and re-compile hibernate.
我将之前的一个应用的Embedded hsqldb更换成h2, 相当简单,只更改了如下配置:
hibernate.connection.url=jdbc:h2:file:test
hibernate.connection.driver_class=org.h2.Driver
hibernate.dialect=h2.dialect.H2Dialect #这个是我另外编译到自己的package的
再将hibernate的自动建表打开:hibernate.hbm2ddl.auto=create
ok,很吸引人的吧。
再看看h2的新特性:
引用
Comparison to Other Database Engines
Feature H2 Derby HSQLDB MySQL PostgreSQL
Pure Java Yes Yes Yes No No
Embedded Mode (Java) Yes Yes Yes No No
Performance (Embedded) Fast Slow Fast N/A N/A
In-Memory Mode Yes No Yes No No
Transaction Isolation Yes Yes No Yes Yes
Cost Based Optimizer Yes Yes No Yes Yes
Clustering Yes No No Yes Yes
Encrypted Database Yes Yes No No No
Linked Tables Yes No Partially *1 Partially *2 No
ODBC Driver Yes Yes? No Yes Yes
Fulltext Search Yes No No Yes Yes
User-Defined Datatypes Yes No No Yes Yes
Files per Database Few Many Few Many Many
Table Level Locking Yes Yes No Yes Yes
Row Level Locking No Yes No Yes Yes
Multi Version Concurrency Yes No No No Yes
Role Based Security Yes Yes *3 Yes Yes Yes
Updatable Result Sets Yes Yes No Yes Yes
Sequences Yes No Yes No Yes
Limit and Offset Yes No Yes Yes Yes
Temporary Tables Yes Yes *4 Yes Yes Yes
Computed Columns Yes No No No Yes *6
Case Insensitive Columns Yes No Yes Yes Yes *6
Custom Aggregate Functions Yes No No Yes Yes
Footprint (jar/dll size) ~1 MB *5 ~2 MB ~600 KB ~4 MB ~6 MB
可以看出,h2支持集群、事务隔离、全文搜索、Sequence,这些hsqldb都不具备
分享到:
相关推荐
H2数据库,非常好的内存数据库。 H2的优势: 1、h2采用纯Java编写,因此不受平台的限制。 2、h2只有一个jar文件,十分适合作为嵌入式数据库试用。 3、性能和功能的优势 H2比HSQLDB的最大的优势就是h2提供了一个十分...
JDBC连接字符串类似于`jdbc:hsqldb:file:/opt/db/testdb`。 - **In-Memory模式**:所有数据存储在内存中,不持久化到磁盘。一旦数据库关闭,所有数据将丢失。JDBC连接字符串为`jdbc:hsqldb:mem:aname`。 3. **...
hsqldb.jar
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9002/test", "sa", ""); ``` 2. **In-Process(Standalone)模式**:当应用程序启动时,数据库也启动,适用于单线程或本地开发。JDBC...
这里的URL "jdbc:hsqldb:mem:testdb" 指定了内存数据库的名称为"testdb"。 **创建表和插入数据** HSQldb支持标准的SQL语句来创建表和插入数据。以下是一个简单的例子: ```sql CREATE TABLE Employees ( id INT ...
其中H2, HSQLDB类似,十分适合作为嵌入式数据库使用,其它的数据库大部分都需要安装独 立的客户端和服务器端。2.H2的优势: 1、h2采用纯Java编写,因此不受平台的限制。 2、h2只有一个jar文件,十分适合作为嵌入式...
- **HSQLDB**:与H2类似,适用于嵌入式应用。 - **MySQL**:最流行的开源数据库之一。 - **PostgreSQL**:强大的对象关系型数据库系统。 其中,H2因其纯Java编写的特性,无需额外的客户端或服务器端即可运行,使得...
HSQLDB,全称为HyperSQL Database,是一款高效、轻量级的纯Java编写的数据库管理系统。它以其独特的特性和广泛的应用场景,深受开发者喜爱,尤其在测试、原型设计和小型应用程序中表现出色。HSQLDB无需独立服务器...
HSQLDB的URL格式通常是`jdbc:hsqldb:mem:databaseName`(内存模式)或`jdbc:hsqldb:hsql://localhost/databaseName`(服务器模式)。 3. **创建Statement或PreparedStatement对象**:这些对象用于执行SQL语句,...
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 application Small footprint: ...
Connection conn = DriverManager.getConnection("jdbc:hsqldb:mem:test", "SA", ""); ``` 这里的`org.hsqldb.jdbc.JDBCDriver`是HSQLDB的JDBC驱动类,`jdbc:hsqldb:mem:test`是URL,指定了内存数据库`test`,`SA`...
H2数据库是一款轻量级、高性能的关系型数据库管理系统,由HSQLDB的作者设计和开发。作为开源软件,H2数据库在许多方面展现了其优越性,尤其在速度和易用性上,它甚至能比HSQLDB运行得更快。这款数据库引擎支持多种...
JDBC URL示例:`jdbc:hsqldb:test`或`jdbc:hsqldb:c:\db\test`。 2. **C/S模式**:数据库运行在独立进程中或另一台机器上,支持多用户同时访问。HSQLDB提供了HTTP协议支持,便于穿透防火墙。服务器模式有SERVER、WEB...
嵌入式数据库H2是Java开发的一款轻量级、高性能的关系型数据库,广泛应用于桌面应用程序和服务器环境。它以其小巧的体积、快速的性能和易于使用的特点,在IT领域内受到许多开发者的青睐。H2数据库支持多种模式,包括...
发布:blacklabelops/hsqldb:latest 安装的软件: Java 8 数据库 SQL工具 让它简短 简而言之,使用此映像在您的开发环境中启动和停止一个简单的 HSQLDB。 $ docker run -d -p 9001:9001 --name hsqldb blacklabelops...
Connection conn = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "SA", ""); Statement stmt = conn.createStatement(); stmt.execute("CREATE TABLE Employees (id INT PRIMARY KEY, name VARCHAR(20...
Connection c = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9002/test", "sa", ""); ``` 可以通过增加更多`-database.n`和`-dbname.n`参数启动多个数据库实例。 2. **In-Process(Standalone)...
MySQL JDBC驱动,全称为Java Database Connectivity (JDBC) 驱动,是Java程序与MySQL数据库之间通信的桥梁。在Java编程中,如果需要对MySQL数据库进行读写操作,就必须引入这个驱动。MySQL JDBC驱动提供了Java标准...