闲来无聊,玩玩JavaDB(Derby)

Part I

新安装了 JDK 6 的程序员们也许会发现,除了传统的 bin、jre 等目录,JDK 6 新增了一个名为 javadb 的目录。这便是 Java 6 的新成员:Java DB。这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。- 摘自百度百科。

一开始学习Java的时候,依稀还记得安装JDK的时候有个JavaDB。当初我这个连Java基本语法都不懂的人当然没去理会。慢慢的,在学习的过程中,我接触到了几款数据库管理系统(Oracle、DB2、SqlServer、MySql、Access等等)。但是,我们在开发的时候为了开发和测试,就需要安装和配置那么多不同种类的数据库,感觉十分的麻烦。于是我就开始寻找一款不需要安装、不需要配置、体积小而且功能强大、与Java兼容性好的数据库管理系统。终于让我找到了Derby。

 

Part II

首先列出一些Derby的JDBC连接配置

  • 驱动:org.apache.derby.jdbc.EmbeddedDriver
  • URL:jdbc:derby:<DataBaseName>[;create=true][;user=UserName][;password=Password]
  • 其中:数据库名必选,后面为可选参数,create参数用于指定,当数据库不存在时是否创建数据库。

 

Part III

下面借这个例子,让大家能感受一下Derby的方便。

package com.gzmu.derby.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public final class DerbyUtil {

private static volatile DerbyUtil instance;

public static DerbyUtil getInstance() {
if (instance == null) {
synchronized (DerbyUtil.class) {
if (instance == null)
instance = new DerbyUtil();
}
}
return instance;
}

private static final String driverName = "org.apache.derby.jdbc.EmbeddedDriver";
private static final String url = "jdbc:derby:derbytest;create=true";

private final Log log = LogFactory.getLog(getClass());

private DerbyUtil() {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
log.error(e);
}
}

public void execute(Processor processor) {
Connection conn = null;
try {
conn = DriverManager.getConnection(url);
conn.setAutoCommit(false);
conn.setSavepoint();
processor.execute(conn);
conn.commit();
} catch (SQLException e) {
log.error(e);
try {
conn.rollback();
} catch (SQLException e1) {
log.error(e1);
}
} finally {
if (conn != null) {
try {
if (!conn.isClosed())
conn.close();
} catch (SQLException e) {
log.error(e);
}
}
conn = null;
}
}

}

package com.gzmu.derby.util;

import java.sql.Connection;

public interface Processor {

void execute(Connection conn);

}

package com.gzmu.derby.util;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.junit.Test;

public class DerbyUtilTest {

@Test
public void testExecute() throws SQLException {
DerbyUtil util = DerbyUtil.getInstance();
util.execute(new Processor() {
@Override
public void execute(Connection conn) {
try {
ResultSet rs = conn.prepareStatement("select * from t_user").executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
});
}
}

这里用到了策略模式来简化Connection的创建和事务的处理。还使用到了JUnit4来测试我们的DerbyUtil。
在没有建立数据库之前,先执行一下代码就会自动的为我们创建数据库。然后我们可以通过Eclipse的工具来为数据库创建表和插入数据,当然如果有使用Hibernate经验的读者应该知道使用Hibernate的auto.hbm2ddl来自动完成建表的操作。
 

怎么样,Derby的使用就是如此的简单,你可以告别繁重的安装和配置操作,轻松的编写一些小程序来测试自己的代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值