数据库应用程序是访问存储数据,并允许你查看、修改或操作这些数据的程序。在大多数情况下,数据存储在一个数据库中。然而,数据也可以作为文本,或以其它的格式存储在文件中。JBuilder允许你访问这些数据,并在DataExpress组件库连同JavaBean 组件库(JBCL)的DataSet包和dbSwing包中定义的属性、方法和事件,来操作这些数据。
从一个数据源(如数据库)请求信息的数据库应用程序被称为客户机应用程序。处理来自各种客户机的数据请求的DBMS (Database Management System,数据库管理系统),被称为数据库服务器。
JBuilder的DataExpress体系结构主要是为Internet或Intranet构建纯Java的客户机/服务器应用程序和Applet。因为你在JBuilder中创建的应用程序是纯Java的,所以他们是跨平台的。
JBuilder应用程序通过JDBC API与数据库服务器通信。JDBC API是JavaSoft数据库连接的规范说明。JDBC是存取与操作数据库数据的纯Java工业标准的API。JBuilder数据库应用程序可以与任何一个有JDBC驱动程序的数据库连接。
数据库应用程序的主要组件
DataSet
DataSet是一个抽象的类。所有DataSet的大量公共API在此类中出现;所有DataSet的导航、数据存取以及更新的API在这个类中出现;对主-从关系、行排序以及行过滤的支持在这个类中出现。所有数据识别JBCL和dbSwing控件都有一个DataSet属性。这意味着Grid Control或JdbTable可以使它的DataSet属性设置为DataSet的各种扩展:DataSet View 、Query DataSet 、Procedure DataSet,以及Table DataSet。
StorageDataSet
StorageDataSet可以使用内存中的存储空间(MemoryStore)来缓冲它的数据。StorageDataSet Store属性也可以被设置到一个DataStore组件,为DataSet数据提供持久的保存(persistence)。StorageDataSet管理DataSet数据的存储,用来维持数据变化视图的索引,以及持久性Column状态。所有结构的API (增加/删除/改变/移动列)都在这个类中出现。因为管理数据,它也能自动记录所有行的更新、插入和删除。因为StorageDataSet的所有改变都被追踪,所以我们准确知道需要做些什么,来把操作期间发生的各种改变回存到数据源中。
DataStore
DataStore组件为DataExpress DataSet、任意文件以及Java对象,提供高性能数据缓存与压缩的持久保存。DataStore组件使用单个文件保存一个或多个数据流。DataStore文件有一个分层目录结构。它使一个名字和目录状态与特定的数据流相联系。
DataSetView
这个组件可以用来提供独立的导航(游标)。它的行排序和过滤与基本的DataSet所用的方法不同。要使用这个组件,需要设置DataSetView组件的Storage DataSet属性。当多重控制需要动态转换到新的DataSet时,使用此组件控制就可以都连接到同一个DataSetView上。为了强制它们都查看新的DataSet,可以改变DataSetView Storage DataSet的属性。
QueryDataSet
这是一个JDBC指定的DataSet。它管理一个JDBC的数据提供者。要提供的数据在Query的属性中指定。Query属性指定一个SQL语句。
ProcedureDataSet
这是一个JDBC指定的DataSet。它管理一个JDBC的数据提供者。要提供的数据用Procedure属性提供。Procedure属性指定一个存储过程。
TableDataSet
这是一个没有内置供应者机制的通用DataSet组件。尽管它没有缺省的供应者,但还是可以被用来把它的修改解析回存到数据源。TableDataSet、Column,以及数据可以通过DataSet方法,或通过用一个像Text Data File的Data File组件来导入数据实现数据的添加。
JBuilder的DataExpress体系结构
DataExpress组件被设计为模块,从而允许分离关键功能。这种设计允许DataExpress组件处理更多种应用程序。DataExpress体系结构的模块化特征包括:
Core DataSet(核心dataset)功能
这是DataExpress的应用程序可使用的数据处理功能的集合。可以使用声明属性与设置事件来应用此功能。此功能包括导航、数据存取/更新、数据的排序/过滤、主-从支持、查找、约束、缺省等等。
Data source independence(数据源独立)
从一个数据源,如Oracle或Sybase服务获取与更新数据被分离为两个关键的界面:供应者/解析器(resolver)。通过把数据的获取与更新干净地分离到两个界面,很容易为新数据源创建新的供应者/解析器组件。对于标准JDBC驱动程序有两种供应者/解析器的实现,它们提供对流行的数据库的访问。例如支持Oracle、Sybase、Informix、InterBase、DB2、MS SQL Server、Paradox、dBASE、FoxPro、Access,以及其他流行的数据库。将来,borland.com和第三方可以为EJB、应用程序服务器、SAP、BAAN、IMS、CICS等创建客户端供应者/解析器组件的执行代码。
Pluggable storage(插入式存储器)
当数据从一个供应者获得时,它缓冲于DataSet中。对缓冲的DataSet所做的所有编辑都被追踪,以便解析器代码段知道什么需要被更新到数据源中。DataExpress 为此缓冲存储器提供两个选项:MemoryStore (缺省)以及Data Store。MemoryStore把所有的数据和数据编辑缓冲到内存中。DataStore使用一个纯Java、小规模、高性能、可嵌入的数据库来缓冲数据和数据编辑。DataStore非常适合于脱离连接/移动的计算、异步数据复制以及小规模的数据库应用程序。
Data binding support for visual component(可视组件的数据绑定支持)
DataExpress DataSet组件提供一个强有力的编程接口,以及对于数据识别组件的直接数据绑定的支持。如在可视化设计器中的网格、列表和字段,通过点的导航与单击属性设置。JBuilder与基于可视化组件的Java JFC一起提供,这些可视化组件直接绑定到DataSet组件。
模块化DataExpress体系结构的优点
网络计算
如前所述,供应者/解析器方法把与任意的数据源的相互作用隔离在两个不相干的模块中。此方法还有另外两个好处:
1.供应者/解析器能够很容易地划分到一个中间层。因为供应者/解析器逻辑一般具有事务的本性,所以划分到一个中间层非常理想。
2.这是一种“无状态”(stateless)的计算模型,对于网络计算很理想,DataSet组件客户和数据源之间的连接可以在使用以后断开。当需要把变化回存到数据源时,只需要在解决事务期间重建连接。
用户接口的快速开发
因为通过简单的属性设置DataSet能绑定到一个数据识别组件,因此它们非常适合于快速构建数据库应用程序用户接口。
移动计算
随着DataStore组件的引入,DataExpress应用程序具有一个持久的可移植的数据库。DataStore可以包含多重的DataSet、任意文件和Java对象。这允许一个应用程序状态完整地持续保留在单个的文件存储空间中。DataSet具有内置的数据复制技术,可用于把对复制数据的编辑保存与调整回存到一个数据源中。
嵌入式应用程序
小规模、高性能DataStore数据库对于嵌入式应用程序非常理想,而且支持DataSet组件的全部功能和语义说明。