时间:2022-05-16 11:06:52
摘要:大量的计算机软件的开发离不开数据库的使用,利用数据库框架实现数据库的应用具有多方面的优势。该文设计和实现了一个微型数据库应用框架,并将该框架应用于实际的软件开发过程中,从而验证了该框架的可用性。该框架适用于小型软件系统的开发,提高了系统的可扩展性。
关键词:Java数据库技术;数据库框架;框架模型;框架实现
中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)36-10184-03
The Research and Development of Database Application Framework on Java
WANG Xiang-zhong
(Software and Art Design Department Nanjing Institute of Railway Technology, Nanjing 210015, China)
Abstract: Many developments of computer software can do without the application of database, it has a lot of advantages in database application using database framework. It designs and realizes a micro-type database application framework, and uses the framework in software development; as a result it confirms that this framework is usable. The framework can apply to the development of small software system, and it can increase the extendibility of the system.
Key words: Java database technology; database framework; framework model; framework realize
随着人类社会对软件需求的不断增加,计算机软件的开发和应用也越来越广泛,已经深入到社会生活的各个方面,而其中基于数据库开发的应用系统也越来越多。研究在软件开发中数据库技术的使用和实现尤其必要。
如果每个程序员都通过实现自己的类来使用数据库,一方面,将增加程序员本身的工作量,增加软件开发中潜在的错误;另一方面,无法降低开发人员对数据库操作的随意性,无法实现代码复用。这些都不符合面向对象的软件开发思想,为了又好又快地开发我们所需的应用系统,随着面向对象开发技术的不断发展,基于框架的软件开发已经成为一种软件开发的趋势,并在实际的软件开发中得到了广泛的应用,其中数据库技术的应用也不例外。
1 框架技术
目前,大量的软件开发实践证明,几乎所有的软件开发都不是从零开始的,而是在一定的已有代码、组件、框架的基础上进行的二次开发,基于框架的软件开发事实上已经成为业界软件开发的一种共识,在数据库应用开发中也是如此。
使用数据库框架至少有三个方面的优势。第一,可以隐藏数据库操作的复杂性,为处理复杂任务提供一套标准的操作程序。第二,可以在开发人员和数据库之间构建一个经过反复试验的稳固的中间层,降低风险。第三,可以让执行任务的方式具有一致性。框架的使用为处理复杂任务提供的标准,如图1所示。
目前,在Java开发中也使用了大量的数据库框架,其中最流行的是Hibernate框架。但Hibernate框架更适合于大型软件系统的开发,并且需要一定是时间的学习。为了在小型软件系统的开发中也使用数据库框架,本文实现了一个的数据库应用框架。
2 Java数据库技术
JDBC(Java Database Connectivity)是由Sun公司及其合作伙伴共同制定的一种基于JAVA语言访问数据库的技术。JDBC提供了访问数据库的接口(即标准),而具体实现由数据库厂商提供,而程序员编程时都是针对接口进行编程的。
JDBC为了使程序员方便地操作数据库,提供了五个重要的接口,它们分别是Connection、Statement、PreparedStatement、CallableStatement和ResultSet,其相互关系如图2所示。
其中:
1)Connection:用于保存特定的数据库连接(会话),在连接上下文中执行SQL语句并返回其结果。
2)Statement:用于执行静态SQL语句并返回其所生成的结果对象。
3)PreparedStatement:表示预编译的SQL语句对象。
4)CallableStatement:用于执行SQL存储过程。
5)ResultSet:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
利用JDBC访问数据库的一般流程如下:
1)加载数据库驱动程序;
2)建立与数据库的连接;
3)执行SQL语句;
4)处理结果;
5)释放数据库连接。
3 数据库框架模型
本文实现的数据库模型的类图如图3所示。
该数据库框架由四个类和一个接口构成。
1)Parser接口:定义了一个解析器的标准,其中包含如下两个方法。
public DatabaseConfigInfor parse(String filename);
public DatabaseConfigInfor parse(File file);
parse()方法实现对一个数据库的配置文件进行解析,并使用DatabaseConfigInfor对象对数据库的配置信息进行包装,以便于数据库配置信息的传输。
2)ParserAdapter类:是实现了Parser接口的一个抽象类,对Parser接口中的两个方法分别进行空实现,即这两个方法从逻辑上而言,什么事也没干。将其定义为抽象类是防止程序员创建该类的对象。
3)XMLParser类:承继于ParserAdapter类的非抽象类,实现对XML配置文件的解析。
4)DatabaseConfigInfor类:是一个JavaBean类,用于存储数据库的配置信息。
5)DBConnection类:实现数据库驱动程序的加载,创建数据库连接对象,用于对数据库的操作。
4 数据库框架实现
本数据库框架的实现涉及到多个类的实现,由于篇幅的限制,本文仅介绍XML配置文件的解析器ParserAdapter类和DBConnection类的实现过程。
1)ParserAdapter类
public class XMLParser extends ParserAdapter
{
private DatabaseConfigInfor dc=null;
public DatabaseConfigInfor parse(String filename)
{
dc=new DatabaseConfigInfor(); //创建保存数据库配置信息的对象
try
{ //创建文档解析器的工厂类对象
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//在解析XML文件时,不考虑空白结点
factory.setIgnoringElementContentWhitespace(true);
//创建文档解析器对象
DocumentBuilder builder=factory.newDocumentBuilder();
//解析XML文件
Document doc=builder.parse(new FileInputStream(filename));
Element element=doc.getDocumentElement();
//提取XML文件中的数据库配置信息,并存入DatabaseConfigInfor对象
NodeList nodes=element.getChildNodes();
for(int i=0;i
{
Node currentNode=nodes.item(i);
String tagName=currentNode.getNodeName();
String tagValue=currentNode.getFirstChild().getNodeValue();
if(tagName.equals("driver"))
{
dc.setDriver(tagValue);
}
else if(tagName.equals("url"))
{
dc.setUrl(tagValue);
}
else if(tagName.equals("databasename"))
{
dc.setDatabasename(tagValue);
}
else if(tagName.equals("user"))
{
dc.setUser(tagValue);
}
else if(tagName.equals("password"))
{
dc.setPassword(tagValue);
}}}
catch(ParserConfigurationException pce)
{ pce.printStackTrace(); }
catch(FileNotFoundException fnfe)
{ fnfe.printStackTrace(); }
catch(org.xml.sax.SAXException saxe)
{ saxe.printStackTrace(); }
catch(IOException ioe)
{ ioe.printStackTrace(); }
return dc;
}}
2)DBConnection类
public class DBConnection
{
public Connection getConnection(Parser parser)
{
//利用解析器解析数据库框架的配置文件
DatabaseConfigInfor dc=parser.parse("dataBaseConfiger.xml");
Connection conn=null;
try
{
Class.forName(dc.getDriver()); //加载数据库驱动程序
//创建数据库连接对象
conn=DriverManager.getConnection(dc.getUrl()+";databasename="+
dc.getDatabasename(),dc.getUser(),dc.getPassword());
}
catch(ClassNotFoundException cnfe)
{ cnfe.printStackTrace(); }
catch(SQLException sqle)
{ sqle.printStackTrace(); }
return conn;
}}
5 结论
该文给出了数据库框架的设计和开发过程,可以将其应用基于数据库的应用系统开发,以避免开发者重复编写操作数据库的代码。经过作者的实践,此数据库可以运用于Java应用系统的开发。在应用该数据库框架时,需要编写相应的DAO(数据访问对象类),也可以通过继承ParserAdapter类实现自己新的数据库配置文件解析器,而不需要修改其他的源代码,从而实现框架的扩展。
参考文献:
[1] 殷兆麟.UML及其建模工具的使用[M].北京:清华大学出版社,北京交通大学出版社,2008.
[2] 何克清,应时,田中茂,等.业务应用软件框架的一种分析方法[J].软件学报,2001,12(7):1007-1014.
[3] Cay S.Horstmann,Gary Cornell[美] .Java2核心技术卷II,高级特性[M].北京:机械工业出版社,2006.
[4] 王国仁.XML数据管理技术[M].北京:电子工业出版社,2007.