Java有一个内置的Derby数据库,是一个完全用Java语言编写的、功能强大的微型数据库,其基础引擎和内嵌的JDBC驱动总共大约2MB大小。Derby为用户提供了轻量的标准数据库引擎,它可以紧密地嵌入到任何基于Java的解决方案中。
Derby的特性令人惊奇,它可以支持关系数据库中的所有企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键/外键约束、触发器、子查询表达式,等等。
Derby数据库可以有两种部署方式:
1,嵌入式:Derby数据库提供了嵌入式的JDBC驱动,因此可把Derby数据库嵌入到Java应用程序内。这种模式的Derby数据库适用于单个用户的Java应用程序,Derby和应用程序运行在同一个JVM中。
2,服务器模式:网络数据库模式,这是标准的数据库服务器(服务器/客户端)模式,是所有的数据库产品都支持的模式。
用 Apache Derby 创建数据库环境
在使用数据库之前,必须先进行数据库部署。
建表实例,假如有需求要处理银行账户,有二个建表的需求,如下所示:
- 嵌入式Derby数据库的部署
如果是 Microsoft Windows® 系统,我们要把数据库创建在D:/DB/BankDB目录。我们可以编写一个创建数据库这二张表的SQL脚本,bankDB_CrtDB.sql如下:
connect 'jdbc:derby:D:/DB/BankDB;create=true' ; --创建数据库的连接字符串
-- 创建银行账户余额表
CREATE TABLE bank.actsBalance (
cardNumber VARCHAR(19) PRIMARY KEY,
actBalance DECIMAL(10,2) check(actBalance>=0),
tradeDate TIMESTAMP
) ;
-- 创建银行账户明细表
CREATE TABLE bank.actsDetail (
cardNumber VARCHAR(19) NOT NULL,
deposit DECIMAL(10,2) check(deposit>=0),
withdraw DECIMAL(10,2) check(withdraw>=0),
tradeDate TIMESTAMP,
FOREIGN KEY (cardNumber) REFERENCES bank.actsBalance(cardNumber)
) ;
从JDK1.6开始Java中就集成了Derby数据库,Derby数据库驱动类相关的jar包是derby.jar,其在JDK中的位置是db目录下的lib子目录,如(jdk后面的数字编号是版本号):“C:\Program Files(x86)\Java\jdk1.7.0_79\db\lib”。但是有的环境中确实找不到Derby数据库相关的db目录。如有需要就要单独下载。下面是我上传的一个Derby数据库JAR包资源链接:
Derby数据库JAR包derby-10.14.2.0-lib.zip
我把derby的JAR包的安装在D:\derbydb目录,其子目录lib中是数据库的jar包, 其子目录bin中有一些数据库管理工具,如 ij 工具、服务器模式所需的管理工具startNetworkServer和stopNetworkServer,如下图所示:
说明:
如果是Java程序中创建嵌入式Derby数据库,实际上只需要derby.jar包就可以了。
Microsoft Windows® 系统中创建嵌入式Derby数据库
如果是 Microsoft Windows® 系统,先要正确设置 DERBY_INSTALL 和 CLASSPATH 环境变量。
可用“记事本”创建一个批处理文件如setDerby.bat,脚本命令如下:
set DERBY_INSTALL=D:\derbydb
set CLASSPATH=%DERBY_INSTALL%/lib/derby.jar
set CLASSPATH=%CLASSPATH%;%DERBY_INSTALL%/lib/derbytools.jar;.
可以在 Microsoft Windows® 系统上“以管理员身份运行”运行CMD命令行提示符窗口,执行批处理文件setDerby.bat,设置就可生效。
注意:无论是 Windows ®还是 UNIX® 脚本文件,一定要确保正确指定安装 Derby 软件的目录。
正确设置了环境变量之后,可以运行 ij 工具运行脚本bankDB_CrtDB.sql来创建数据库。我的脚本bankDB_CrtDB.sql在D:\Temp文件夹中,因此用ij执行时命令为:run ‘D:\Temp\bankDB_CrtDB.sql’;
如下图,表示数据库和两个数据库表已创建完成,创建的数据库在D:\DB文件夹中的BankDB。两个表中的记录数为0:
linux系统中创建嵌入式Derby数据库
linux系统使用Derby 数据库部署包中的交互工具 ij 部署数据库服务器
如果是linux系统就必须正确设置 DERBY_INSTALL 和 CLASSPATH 环境变量。可用 vi 编辑器,将相关的 Java Archive (JAR) 文件的安装路径添加到 shell 初始化文件(比如 .bashrc 文件)中的 CLASSPATH 中,如下所示:
export DERBY_INSTALL='/opt/Apache/db-derby-10.1.2.1-bin'
export CLASSPATH=$DERBY_INSTALL/lib/derby.jar
export CLASSPATH=$CLASSPATH:$DERBY_INSTALL/lib/derbytools.jar:.
保存后,退出系统。然后重新登录系统,设置就可生效。
再次登录linux系统,运行建表脚本bankDB_CrtDB.sql就可创建数据库。
dB$ echo $CLASSPATH
/opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar:
/opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar:.
dB$ mkdir derbyWork
dB$ cd derbyWork
dB$ java org.apache.derby.tools.ij
ij version 10.1
ij> run bankDB_CrtDB.sql
ij> exit ;
rb$ ls -l
说明:
linux系统中由于手边没有环境,没有实测。
- 服务器模式Derby数据库的部署
Microsoft Windows® 系统中创建服务器模式Derby数据库
服务器模式Derby数据库,必须部署derby的JAR包。我把derby的JAR包部署在D:\derbydb目录。其他环境变量设置参照嵌入模式。环境变量生效后,我们可以开始工作了。
第一步,先开启数据库网络服务:
数据库网络服务启动后,数据库服务端口是1527
第二步,用 ij 创建数据库
说明:
创建服务器模式derby数据库的“创建数据库的连接字符串”与嵌入式的不同,因此,需要更新脚本bankDB_CrtDB.sql。把第一行更新为:
connect ‘jdbc:derby://localhost:1527/D:/DB/BankDB;create=true’ ;
准备好脚本bankDB_CrtDB.sql后,可另起一个CMD窗口,运行 ij 工具运行脚本bankDB_CrtDB.sql来创建数据库。
我的脚本bankDB_CrtDB.sql在D:\Temp文件夹中,因此用ij执行时命令为:
run ‘D:\Temp\bankDB_CrtDB.sql’;
如下图,表示数据库和两个数据库表已创建完成,创建的数据库在D:\DB文件夹中的BankDB。两个表中的记录数为0: