在 Eclipse 中开发 Apache Derby 应用程序
原文(http://www.ibm.com/developerworks/db2/library/techarticle/dm-0501roux/)
翻译( http://www-128.ibm.com/developerworks/cn/db2/library/techarticles/dm-0501roux/)
级别: 初级 Gilles Roux, 信息管理软件工程师, IBM 2005 年 2 月 01 日 在开发 Apache Derby 应用程序的过程中需要执行很多任务,例如创建和连接数据库,编写 Java™ JDBC 客户机应用程序和存储过程,以及将最终得到的软件组件部署到生产环境。本文旨在发现如何结合使用各种基于 Eclipse 的 Apache Derby 工具来简化这一开发过程。<!----><!----><!----> 本文的目的是向您展示如何在 Eclipse 集成开发环境(IDE)中使用几种不同的工具,例如 Java Development Tools、IBM® DB2® plug-ins for Eclipse 和 IBM integration plug-in for Derby,以便开发 Apache Derby 应用程序。 本文将介绍一个典型 Derby 应用程序的整个开发周期,从数据库的创建开始,然后经历 JDBC 客户机应用程序的开发,存储过程和函数的开发,最后是解决方案的开发。本文还将描述必要时如何用 DB2 Universal Database (UDB) 数据库替代 Apache Derby 数据库。 本文假设您对 Apache Derby 数据库、Eclipse 平台和 DB2 plug-ins for Eclipse 有基本的理解。强烈建议您阅读 参考资料 一节中列出的文章“与 Apache Derby 一起使用 DB2 plug-ins for Eclipse”的两个部分。 为了阐明应用程序开发中涉及的各种不同任务,作者 Gilles Roux 将提供关于如何构建一个示例应用程序的具体例子和逐步说明。 在这个例子中,您需要开发一个命令行应用程序来执行一家书店的库存管理。书店的数据库存储了这家书店拥有的各种书籍,以及这些书籍的现有数量。 这个示例应用程序将允许您访问这些数据,并允许您更改书籍的数量。例如,如果从一个供应商那里收到一批书,那么就要使用这个应用程序来添加所收到书籍的数量。如果书籍的数量超过或者低于某个限制,则需要用电子邮件通知管理员,以便其采取必要的行动。
Java Development Tools(JDT)是一组内建到 Eclipse 中的插件,为编辑、编译、调试、执行和部署一般用途的 Java 应用程序提供了一种方法。 DB2 plug-ins for Eclipse 提供了连接到各种数据库(包括 IBM Cloudscape 和 Apache Derby)的一组功能。这个插件是以下几个插件的组合。
IBM integration plug-in for Derby 将很多有用的 Derby 工具集成到了 Eclipse 环境中。下面是该工具所提供的主要功能:
DB2 plug-ins for Eclipse 和 IBM Integration plug-in for Derby 是两个独立的工具,但是它们之间互补性很强,前者提供了一般数据库连接,而后者则提供了访问很多特定于 Derby 特性的访问途径。 然而,很多任务都可以通过这些工具中的任意一个来执行,效果是一样的。本文提到了执行一个给定任务的各种不同方法,从而使每个用户都可以选择他们所喜爱的工作方式。 首先要下载和安装 DB2 plug-ins for Eclipse。该产品包括 DB2 插件,并且是基于 Eclipse 3.0 的,后者本身就包括了 JDT。 然后从 Apache.org 下载 Apache Derby plug-in,并在安装了前面软件的基础上安装此软件。 最后,下载 IBM Integration plug-in for Derby 并在安装了 eclipse 的基础上安装此软件。该插件包括 JCC JDBC 驱动程序和 Derby 集成工具。 如前所述,您将使用几种不同的工具来开发应用程序:DB2 plug-ins for Eclipse、IBM Integration plug-in for Derby 和 JDT。这些工具都是基于 Eclipse 的,因此它们可以很好地集成到一个单独的开发环境中。 在开发应用程序时,通常要建立一些到数据库的连接:
Derby 数据库引擎可以在多种配置下运行。最简单的一种是嵌入式配置,但在这里不适合,因为需要通过运行在不同 Java 虚拟机上的几种工具建立连接。而且,在生产环境中,可能需要从多个应用程序中访问数据库。因此,这里使用 Network Server 配置。IBM Integration plug-in for Derby 提供了一种选择,以便可以很容易地从 Eclipse 项目目录中启动本地机器上的 Derby Network Server。接着要配置应用程序和其他工具,以连接到该网络服务器。下图展示了配置情况。 图 1. 开发环境配置 设置环境的第一步是创建项目。选择“File->New->Project->Java Project”并输入 bookstore 作为项目名称。这样就创建了一个 Java 项目,然后切换到 Java perspective(透视图)中。右击该项目并选择“Apache Derby->Add Apache Derby nature”。这样使您的项目可以使用 Apache Derby 特性,然后设置该 Java 项目的构建路径,以便应用程序可以访问 Derby 数据库和 JDBC 驱动程序。 DB2 plug-ins for Eclipse 通常可以从 Data perspective 访问,并且无需与某个特定的项目相关联。为了简化开发过程,避免 Java perspective 和 Data perspective 之间的切换,需要将 DB2 plug-ins 视图,即 Database Explorer 视图和 DB Output 视图,添加到 Java perspective。这可以通过 图 2. 开发环境布局
在开始编写实际的应用程序代码之前,需要创建应用程序将要用到的数据库,或者连接到一个已有的数据库。 首先通过右击项目并选择“Apache Derby->Start Derby Network Server”来启动 Derby Network Server。每次重新启动 Eclipse 时都需要执行这一步。这时项目图标上有一个绿色的箭头,表明服务器正在运行。 创建一个 Derby 数据库非常类似于连接到一个已有的数据库:通过将
图 3. 使用 Connection Wizard 创建数据库 完成该向导后,便创建了一个数据库,并且向 Database Explorer View 中添加了一个连接。通过展开连接的节点,就可以浏览这个数据库,但是显然这个时候它是空的。 数据库被创建在 Derby 网络服务器的当前目录中,也就是之前创建 Eclipse 项目时所在的目录。可以通过右击项目名并选择 Refresh 来刷新该项目,这样将显示一个新的 接下来的步骤是创建应用程序将要用到的数据库对象。在这里,只需使用 SQL Scrapbook 创建一个表即可。SQL Scrapbook 可以通过右击连接名并选择“Open SQL Scrapbook”来调用。这时将打开一个新的编辑器,在这个编辑器中可以输入要发出的 SQL 语句: 清单 1. CREATE TABLE 语句
请注意,SQL Scrapbook 只能用于执行单条的 SQL 语句。而且,不要以分号来结束 SQL 语句。然后,可以按下主 Eclipse 按钮栏中的“Execute SQL statement”按钮。DB Output 视图应该显示结果是成功的。还可以刷新连接,以及验证数据库现在是否包含新创建的表。 图 4. 使用 SQL Scrapbook 创建表 现在通过执行 INSERT 语句向 books 表填充一些测试数据。这也可以通过 SQL Scrapbook 来实现,但这里我们使用了 IBM Integration plug-in for Derby 的“Run SQL script using ij”功能。这项功能允许使用 Derby 命令行实用程序执行 SQL 脚本,并在 Eclipse 输出视图中查看结果。这种方法的一大优点是:它允许一次执行多条语句。而且,这种方法要求在脚本的开始处包含一条连接语句,因此您可以对连接 URL 有更多的控制。 表 2. SQL Scrapbook 和 IJ 脚本 之间的不同之处
构建 URL 的一种简便方法是复制 Connection Wizard 所使用的 URL:在数据库浏览器中右击连接,然后选择“Edit Connection”并访问“Connection URL”字段。这里需要添加用户名和密码作为 URL 属性。 使用 Eclipse 在项目中创建一个名为 清单 2. INSERT INTO 语句
然后就可以在 Project Explorer 中右击该文件并选择“Apache Derby->Run SQL script using ij”。Eclipse 的控制台输出视图将显示执行的结果,这个结果应该是成功的。然后可以在 Database Explorer 中选择 books 表,并选择“Sample Content”,以确信数据真正被插入到这个表中。 图 5. 执行 SQL 脚本以插入数据
通过使用 Eclipse JDT 和 Derby JDBC 驱动程序,可以很容易地编写 JDBC 应用程序。首先使用 JDT Class 向导在 在连接到一个 Derby 数据库之前,需要使用 可以使用两种不同的 JDBC 驱动程序,这取决于 Derby 配置:
由于这个例子是基于一个网络服务器配置,因此这里使用 jcc JDBC 驱动程序。如果不确定的话,那么正确的类名可以通过从 Connection 向导复制获得: 清单 3. 装载 jcc JDBC 驱动程序
获得连接 URL 的一种好方法是在 Database Explorer 视图中编辑 Derby 连接,并复制从各个连接属性自动构造而成的连接 URL。出于安全的原因,这里没有显示用户名和密码,因此在应用程序代码中需要手动地将它们添加到 URL 的后面。 图 6. 使用连接向导构建连接 URL 其他选项也可以添加到 URL 的后面。例如, 在本文的例子中,使用下列代码连接到 Derby 数据库: 清单 4. 连接到数据库
一旦建立了连接,便可以通过使用 JDBC API 查询数据库。例如,您可以创建一个 Statement 对象,然后使用这个对象来执行对数据库的 SQL 查询。查询返回一个用于迭代查询结果集的 清单 5. 执行查询并迭代结果集
图 7. 运行 JDBC 应用程序 要了解关于使用 JDBC 的更多信息,请参阅本文 参考资料 一节中列出的 JDBC 教程。 您可以下载 下面是应用程序输出的一个例子: 图 8. Inventory 应用程序的示例输出
前一节中讨论的 JDBC 应用程序对于开发用于用户的前端应用程序非常有用。然而,在这一层中实现重要的应用程序逻辑不是很妥当,因为应用程序逻辑放置在数据库之外,这使得数据库更容易受到损坏。例如,如果另一个 JDBC 应用程序连接到同一个数据库,那么就需要确保它实现相同的逻辑。对于这个问题,一种解决办法是通过使用触发器、存储过程和函数,在数据库中实现数据库规则。 由于 Derby 是一种 Java 数据库,因此它没有自己的存储过程/函数语言,而是使用 Java 语言。可以通过创建一个 Java 方法,然后基于这个 Java 方法声明一个 Derby 过程或函数,从而创建 Derby 存储过程或函数(通常称为例程)。对 Derby 例程的调用将导致这个 Java 方法被调用。 为了让这种调用获得成功,重要的是让 Derby 和 Java 例程的声明相匹配。下面的表展示了应该使用的 Derby 和 Java 特性的映射。
对于 Java 方法本身的内容没有约束,因此任何合法的 Java 代码都可以作为 Derby 过程或函数来调用。一种有趣的应用是使用标准 对于本文的应用程序,需要在 因此,这个 Java 方法的声明如下: 清单 6. Java 方法的声明
这个函数的作用是:当书的数量达到一个下界或上界时,就发送一封电子邮件。因此,可以声明 下面是完整的代码: 清单 7. DerbyFunctions 类
从 main 方法中调用这个 Java 方法,以便对其进行测试,这通常是一种很好的做法。 创建 Derby 存储过程或函数比较容易,只需指定名称、参数、返回值和相应 Java 方法的全限定名称即可。Derby 例程的标签必须与 Java 方法的标签相匹配,以便数据库可以成功地调用 Java 代码。 可以很容易地从 SQL Scrapbook 发出 CREATE 语句,但是在这个例子中,最好使用 ij 实用程序。如果使用 ij 实用程序,便可以显式地指定连接 URL,从而允许我们包括 下面是在 ij 中发出的命令: 清单 8. 在 Derby 中创建 Java 函数
Derby 函数的创建应该可以成功,但有时候我们很难一开始就能保证语句完全正确。下面是可能发生的一些常见错误:
请注意,如果更改了方法的 Java 代码,那么就需要停止并重新启动 Derby 网络服务器,以便数据库引擎的类装载器装载新的代码。 成功地创建了 Derby 例程之后,就可以通过 ij 命令行调用这个例程,以便对其进行测试。可以通过使用 CALL 语句来调用 derby 过程,但在这里因为需要测试一个函数,因此发出以下命令: 清单 9. 调用 Derby 中的 Java 方法
IJ 显示返回值,在这里,这个返回值为 1,因为数量到达了上界。由于这个 Java 方法是在 Derby 服务器 JVM 中运行的,因此调试消息将被输出到服务器的标准输出中。使用 eclipse 控制台视图切换到 Derby 网络服务器控制台,您应该可以看到一条 还可以尝试使用以下代码从 JDBC 应用程序中调用 Derby 函数: 清单 10. 从客户机应用程序中调用 Java 方法
结果应该与前面测试中的结果一致。 本节最后一步是配置 Derby,以便每次更新某种书籍的数量时,调用之前定义的函数。这可以用一个触发器来实现。 derby 触发器包含关于要执行的动作以及何时执行动作的信息。
下面是在 ij 中发出的用于创建触发器的语句: 清单 11. CREATE TRIGGER 语句
检查触发器是否有效的一种简便方法是使用以下命令从 ij 工具中更新 book 表: 由于触发器直接存储在数据库中,因此无论如何更新数据,对触发器的调用都将是一致性的。由于这个原因,如果您试图使用客户机应用程序更新数量,那么您将看到,适当的时候就会生成电子邮件消息,不需要对应用程序作任何更改。 下图展示了客户机应用程序的输出,用的是原始数据。注意,这一次书的状态会获得更新,并生成了一条消息: 图 9. Inventory 应用程序的示例输出 图 10. Network Server 的示例输出
至此,您已经有了一个功能完备的数据库和客户机应用程序,但它们仍然只能在 Eclipse 环境中运行,在生产环境中不被接受。因此,还需要执行应用程序的部署。 如前所述,Derby Java 函数或过程是由数据库引擎自身来执行的。因此,数据库引擎必须能够访问 Java 类。在这个例子中,这一点是没有问题的,因为 Derby 网络服务器运行在 Eclipse 项目中,并且使用项目的类路径,该类路径包含了已创建的所有 Java 类。 在一个典型的生产环境中,您不需要更改用于 Derby 网络服务器的类路径。Derby 提供了一些可以解决这个问题的过程:
对于本文中的例子,首先要创建一个 JAR 文件,这个 JAR 文件包含 然后可以使用下列命令(在 ij 中)将 JAR 文件安装到数据库中,并将其添加到类路径中: 清单 12. 将 JAR 文件存储在 Derby 数据库中
做完这些后,Java 代码便属于数据库,这使得数据库的转移和启动变得很容易。整个数据库目录可以直接转移到一个完全不同的环境中,并且可以正常运行。 在开发应用程序时,我们使用了网络服务器配置,这样一来,应用程序的部署就会按正确的方式打包各个组件。 在服务器端,需要安装:
这些组件可以复制到任何装有 JVM 的机器上,网络服务器可以使用下列命令来启动: 清单 13. 启动 Derby 网络服务器
可以使用下列命令可以停止网络服务器: 清单 14. 停止 Derby 网络服务器
在客户端,需要安装:
这些组件可以复制到任何装有 JVM 的机器上。当网络服务器正在运行时,可以使用以下命令启动应用程序: 清单 15. 启动客户机应用程序
下图阐明了网络服务器配置中应用程序的部署: 图 11. 网络服务器部署配置 下图展示了应用程序在生产环境中的执行: 图 12. 已部署的网络服务器的执行 图 13. 已部署的客户机应用程序的执行 网络服务器配置也许最适合这种类型的应用程序,但是也可以使用嵌入式服务器配置,比如出于性能方面的原因。 在部署应用程序之前,需要在代码中作一下修改,使连接指向嵌入式服务器,而不是远程服务器。这可以通过修改 JDBC 驱动程序类名和连接 URL 来实现这一点: 清单 16. 新的连接代码
完成这些修改之后,便可以使用 Eclipse 导出功能将应用程序的类打包到 JAR 文件中,并将下列文件部署到生产机器上:
可以使用下列命令启动应用程序: 清单 17. 启动应用程序
下图阐明了应用程序在嵌入式服务器配置中的部署: 图 14. 嵌入式服务器部署配置 |
发表评论
-
UitraEdit常用快捷键
2006-08-23 11:16 1391Ctrl+Q 快速打开 不显示文件打开对话框打开一个已有 ... -
ORACLE SQL性能优化系列
2006-12-13 22:16 8001. 选用适合的ORACLE优化器 ORACLE的优化器 ... -
java中相对路径,绝对路径问题总结
2006-12-14 13:31 2149java中相对路径,绝对路径问题总结 ... -
Tomcat的中文處理
2006-12-14 18:26 908原地址 httpwww.csdn.netdeveloparti ... -
Derby-Apache开源小型数据库项目
2006-12-15 10:42 1936derby入门一、 derby ... -
(转贴)使用VTD-XML简化XML处理-克服DOM及SAX缺点的新选择
2006-12-15 16:55 1306作者:Jimmy Zhang;(原文地 ... -
SQL常用语句
2006-12-21 10:36 1025=SQL语句集锦=---语 句-- -- ... -
SQL精华
2006-12-21 16:28 958--1、查找员工的编号、姓名、部门和出生日期,如果出生日期为空 ... -
java-Xml
2006-12-22 13:26 1067在IBM的developerWorks上有 ... -
J2EE开发中设计到的应用
2006-12-22 13:45 865以下是在J2EE综合开发 ...
相关推荐
在Eclipse中开发Apache Derby应用程序涉及到一系列步骤和工具的使用。Apache Derby是一款开源的关系型数据库管理系统,它轻量级、嵌入式,适用于Java应用程序。Eclipse作为流行的Java集成开发环境,提供了丰富的工具...
在本节中,我们将详细介绍如何在 Eclipse 中安装 Apache Derby 相关插件,以便更好地支持数据库管理和开发工作。 ##### (一)所需组件 根据提供的部分内容,安装过程中会涉及以下组件: - `org.apache.derby.core...
收集的学习资料,包括:Derby数据库(V10.9)用户手册(PDF版),用 Apache Derby 进行 Java 数据库开发,用 Apache Derby 进行数据库开发,03开源项目(三)嵌入式数据库Apache Derby(1)(开发指南).pdf ,Apache Derby ...
Apache Derby是一个开源的数据库管理系统,由Apache软件基金会研发,属于纯Java语言编写的应用程序。由于它采用Java编写,因此只要操作系统支持Java虚拟机(JVM),Apache Derby就可以在其上运行。这意味着Apache ...
总结,安装Derby插件对于在Eclipse中进行Java项目开发,特别是涉及Derby数据库的项目,能极大地提高开发效率。通过以上步骤,你可以轻松地在Eclipse中集成Derby插件,享受其带来的便利。同时,别忘了定期更新插件以...
- **简介**:此文档主要面向开发者,提供了高级编程技巧和最佳实践等内容,帮助开发者更高效地利用Derby进行应用程序开发。 4. **《Derby Server and Administration Guide》(适用于10.2版本)** - **链接**:...
首先启动Derby服务,然后在Eclipse中进行数据库操作,这包括创建表、插入数据以及执行CRUD操作。这样的基础操作演示了如何在Eclipse环境下利用Derby进行数据库开发的基本流程。 总的来说,Apache Derby是一个适合单...
Apache Derby是Apache软件基金...总而言之,Apache Derby是一个开源、轻量、纯Java实现的数据库系统,它适合嵌入式环境和小规模的应用程序,同时提供了一整套的文档和工具,帮助用户和开发者实现高效的数据管理与开发。
Derby还支持嵌入式模式,可以直接在应用程序中运行,无需额外的服务器进程,这对于开发和测试环境非常方便。 Derby提供了丰富的JDBC驱动,使得Java开发者可以通过标准接口进行数据库操作。此外,它还支持SQL标准,...
Apache Derby由Apache软件基金会维护,它以其小巧、高效、易于集成的特点,被广泛应用于桌面应用程序、服务器端应用以及测试环境。 标题"apache derby"指的是这个压缩包与Apache Derby项目相关,可能包含该数据库...
- Derby Developer's Guide for 10.10版本:开发者指南是一本专门为软件开发者编写的书籍,涵盖如何使用Derby进行应用开发的各个方面。 - Tuning Derby for 10.10版本:性能调优指南提供了一系列优化Derby性能的技巧...
学习如何使用 Apache Derby、Apache MyFaces 和 ...本文中示例应用程序使用了 Model-View-Controller (MVC) 架构,用来说明 MyFaces 组件的强大功能以及使用 Apache Derby 和最新视图技术 Facelets 进行开发的简单性。
10. **开发工具集成**:熟悉如何在IDE如Eclipse或IntelliJ IDEA中集成Derby,进行数据库开发。 总的来说,Apache Derby是一个非常适合初学者和小型项目使用的数据库系统,它的易用性和灵活性使其在Java开发领域中...
Eclipse 配置 Derby 教程主要介绍如何在 Eclipse 中配置和使用 Apache Derby 数据库引擎。Apache Derby 是一个与平台无关的数据库引擎,它提供了企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键...
Eclipse Derby插件是用于在...总之,Eclipse Derby插件为开发者提供了一站式的数据库管理解决方案,极大地简化了在Eclipse中使用Apache Derby的过程,提高了开发效率,降低了学习曲线,是Java开发人员必备的工具之一。
嵌入式数据库Apache Derby是用 Java 语言编写的,所以可以在任何存在合适的 Java 虚拟机(JVM)的地方运行,Derby软件绑定在Java档案(JAR)文件中,只有2MB大小.
尽管SQuirreL是一个独立的工具,但可以在Eclipse中打开其链接,实现数据库管理和开发的无缝切换。这为开发者提供了更灵活的工作流程,尤其是在进行数据库调试和性能优化时。 以上就是关于Apache Derby集成到...
Derby数据库Eclipse插件是开发人员在Eclipse集成开发环境中使用Apache Derby数据库时的一种便捷工具。Apache Derby,也称为JavaDB,是一个...对于那些在Eclipse中进行Java和Derby开发的团队,这个插件是不可或缺的。