background image

org.apache.derby.jdbc.EmbeddedDriver

 

 

; 创 建 一 个 新 数 据 库 时 需 要 在 协 议 后 加 入 

create=true  

 

 

。 另外, 关闭所有数据库以及 Derby 的引擎可以使用以下代码:

 

清单 3. 

 

关闭所有数据库及 Derby 引擎

DriverManager.getConnection("jdbc:derby:;shutdown=true");
如果只想关闭一个数据库,那么则可以调用:

 

4.

 

库 

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

 

这样,使用嵌入模式的 Derby 

 

维护和管理数据库的成本接近于 0。这对于希望

 

 

专心写代码的人来说不失为一个好消息。 然而有人不禁要问: 既然有了内嵌模式,

 

为什么大多数的 DBMS 

 

 

都没有采取这样的模式呢?不妨做一个小实验。 当我们同 时

 

在两个命令行窗口下运行 HelloJavaDB 

 

程序。结果一个的结果与刚才一致, 而另一

   

个却出现了错误,如 图 2 所示。

 

图 2. 内嵌模式的局限

 

错误的原因其实很简单:在使用内嵌模式时, Derby 本身并不会在一个独立的

 

 

进 程中,而是和应用程序一起在同一个 Java 虚拟机(JVM)里运行。因此,Derby 

 

如同应用所使用的其它 jar 

 

文件一样变成了应用的一部分。这就不难理解为什 么在

classpath 

 

中加入 derby   

的 jar 

 

文件,我们的示例程序就能够顺利运行 了。这也

 

说明了只有一个 JVM 

 

能够启动数据库:而两个跑在不同 JVM 

 

实例里的 应用自然就不

能够访问同一个数据库了。

 

鉴于上述的局限性,和来自不同 JVM 的多个连接想访问一个数据库的需求,下

 

一节将介绍 Derby 的另一种模式:网络服务器(Network Server

 

)。 网络服务器模

 

式 如上所述,网络服务器模式是一种更为传统的客户端/

 

服务器模式。我们需要启 动

 

一个 Derby 

   

的网络服务器用于处理客户端的请求,不论这些请求是来自同一 个 JVM

 

实例,还是来自于网络上的另一台机器。同时,客户端使用 DRDA (Distributed R

elational Database Architecture

 

 

)协议连接到服务器端。这 是一个由 The Open 

Group 

 

倡导的数据库交互标准。图 3 

 

 

 

说明了该模式的大体 结构。 由于 Derby 的开

 

发者们努力使得网络服务器模式与内嵌模式之间的差异变小, 使得我们只需简单地修