apache-derby-数据库使用注意事项


Apache Derby数据库是一个小巧的、支持内嵌模式的数据库,他实现了SQL-99 和 SQL-2003 标准。最近由于项目的原因,开始使用Derby,以下是一些使用心得:

  1. SQL语句不支持rownum关键字

    虽然不直接支持rownum关键字,但是可以通过ROW_NUMBER函数实现。用法如下:

    SELECT * FROM (
      SELECT
        ROW_NUMBER() OVER () AS rownum,
        columns
      FROM tablename
    ) AS foo
    WHERE rownum

    参考:OLAPRowNumber

  2. 修改derby.log文件存储目录

    derby.log记录了数据库启动、运行、结束的日志信息,这个日志文件默认并不会跟随着数据库存储,而是存放在了工程根目录下。通过设置derby.system.home属性,我们可以解决derby.log日志文件存储路径的问题。在Java应用启动的时候增加一下参数:

    -Dderby.system.home=/home/leo/derby

    系统启动之后,derby.log文件就会存放在/home/leo/derby目录下

  3. 关闭Derby数据库

    Apache Derby在作为内嵌数据库运行的时候, 我们需要在系统退出之前停止Derby数据库。方法如下:

    DriverManager.getConnection("jdbc:derby:;shutdown=true");

    可以直接用以上语句停止数据库。执行停止命令时,数据库名称不是必须的。Apache Derby数据库在停止成功后,会抛出java.sql.SQLException,这是正常的。 更详细的描述请参考:Shutting down the system

  4. 同一个JVM实例中如何重启Derby

    首先按照第三步关闭数据库,然后执行下面的代码,需要特别注意的是newInstance()方法。重新注册驱动,必须增加newInstance()方法。

    Class.forName(org.apache.derby.jdbc.EmbeddedDriver).newInstance();

    或者增加 deregister=false属性,然后关闭数据库。通过设置deregister=false属性后,可以避免重新注册驱动。

    DriverManager.getConnection("jdbc:derby:;shutdown=true;deregister=false");
Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s