类似hsqldb的好东西:h2 database

不记得是哪个在坛子里推荐过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都不具备

你可能感兴趣的:(Hibernate,mysql,PostgreSQL,HSQLDB,Derby)