Java技术在多数据库系统中的应用研究

  • 来源: 计算机与信息技术 作者: 若水   2008-05-07/15:45
  • 摘 要 本文讨论的是在多种异构数据库下,如何进行多数据库的访问,并分析了使用Java技术下的各种方法进行多种异构数据库下的数据交换。

    关键词 异构数据库;EJB;Servlet

    引言

    现在的各种数据库应用,由于技术、历史等因素,往往在一个大的部门中并存有多个应用系统。这些应用系统可能分散于不同的网络节点、基于不同的操作平台、使用不同的数据库管理系统,且各子系统封闭运行,自成一体,这样给不同部门的信息资源共享带来困难。如何在不改变原来系统的内部信息的前提下,完成不同数据库系统间的数据访问和交换是值得研究的问题。

    多数据库系统的Java解决方案

    多数据库系统的构成有多种方式,在这些方式中,我们考察这些多数据库的不同点,其主要表现在以下几个方面的异构:

    (1)数据库逻辑数据模型的异构:有层次、网状、关系、对象-关系和对象五种数据库。

    (2)数据库物理数据模型的异构:物理数据模型反映数据库存储结构,例如物理块、指针、索引等,即使逻辑数据模型相同,如关系数据库的ORACLE、SYBASE、DB2等,其物理数据模型也存在差异。

    (3)操作系统的异构:UNIX、WINDOWS系列、MacOS、OS/2、DOS等。

    (4)计算机平台的异构:从巨、大、中、小型机到工作站,微机以及手持机。

    (5)网络的异构:LAN、WAN、以太总线结构与令牌环结构等。

    在这些异构中,有些是数据库历史所造成的,如层次、网状类型的数据库;有些是不同的数据库开发商开发的不同的数据库管理系统造成的;有些是计算机操作系统的不同;而有些是网络结构和计算机平台的原因。对于这些不同,从目前来看,我们认为当前应该着重解决的在关系模式下的不同的操作系统和不同数据库管理系统。

    众所周知,Java技术是全新的编程技术,它具有平台无关性、面向对象、安全、高性能、分布式,多线程等特点,使Java成为当前最为类型的编程语言和平台。对于多数据库系统联合访问和数据交换,使用Java技术可以解决不同的操作系统和不同的数据库管理系统之间的数据处理。

    1)使用Java Bean技术实现多数据库的访问

    Java Bean是一个Java模型组件,它为使用Java类提供了一种标准的格式,在用户程序和可视化管理工具中可以自动获得这种具有标准格式的类的信息,并能够创建和管理这些类。

    基于Web的多数据库访问是电子商务和电子政务迅速发展而出现的一种多数据库联合应用的形式。在数据库异构,操作系统异构的条件下,对于数据量很大的这种多数据库应用问题,只有Java 技术才有能力解决。

    对于在Web下的多数据库访问,Java的新技术是Servlet。Java Servlet是在服务器端运行的Java程序。现在随着Servlet API2.3版的引入,服务器的Servlet将把Java Web软件开发带向更高的层次。Servlet提供了快捷、强大、灵活的开发环境。开发出来的Servlet可以在服务器的进程空间里运行,并能同时处理多个请求。当然,最值得称道的是Servlet的平台无关性。

    对于基于Web的多数据库访问,Java Bean技术可以提供一个比较强大、灵活的解决方案。首先构造多个Java Bean,在这些模型组件里,我们要处理数据库的连接、定义,查找、插入、删除操作等方法,并要实现多线程,然后构造编写调用Java Bean的Servlet,这样可以实现对多数据库的访问。Java Bean的结构如下:

    public class DatabaseConnectBean

    {

    定义数据库连接的成员;

    定义连接的方法{ }

    ……

    }

    在Servlet中调用Java Bean的过程为:

    public class UsedatabaseBean extends HttpServlet
    {
    public void doGet(httpServletRequest req,HttpServletResponse resp) throws ServletException,IOException
    {
    ……
    }

    public void doPost(httpServletRequest req,HttpServletResponse resp) throws ServletException,IOException
    {
    ……

    //创建Java Bean的对象

    DatabaseConnectBean conBean=new DatabaseConnectBean(……);

    //使用conBean进行数据库的操作

    ……
    }
    }

    从上述的过程和语句我们可以发现,使用Servlet技术可以访问各种不同类型的数据库,但是使用Servlet技术下的Java Bean技术要保证数据库数据的一致性,应在Java Bean中我们可以使用Java的线程技术中的同步等方法来实现对数据库的连接、操作,但这样将加大程序员的编程实现。所以使用Servlet技术下的Java Bean能同时对多个数据库实体的访问,但实现起来不方便。

    2)使用EJB技术实现多数据库的访问

    EJB是Sun定义的一组标准的Java扩展的开发接口,称为Enterprise Java Bean API。这些应用程序编程接口(API)为各种各样的中间件实现了不依赖供应商的编程接口,Enterprise Java Bean技术把Java组件的概念从客户机域扩展到了服务器域,它使Java技术发展成为一种强健的、可伸缩的环境,能够支持以任务为关键的企业信息系统。

    Enterprise Bean运行在EJB容器中。EJB容器在运行时管理Enterprise Bean的各个方面,包括远程访问Bean、安全性、持续、事物、并行性和资源的访问与合用等。

    EJB容器不允许客户机应用程序直接访问Enterprise Bean。当客户机应用程序调用Enterprise Bean上的远程方法时,容器首先拦截调用,以确保持续、事物和安全性都正确应用于客户机对EJB执行的每一个操作。EJB容器的结构图如图1所示。#p#分页标题#e#


    图1 EJB容器结构示意图

    EJB组件分为3种主要类型:会话Bean(Session Bean)、实体Bean(Entity Bean)和消息驱动Bean(Message-Driven Bean)。会话Bean实现某些在服务器上运行的业务逻辑。会话Bean对象不在多台客户机之间共享。其特点是(1)它代表单个客户机执行。(2)会话Bean包含事物处理。(3)可以使用会话Bean更新共享数据库中的数据。(4)会话Bean的生存期就是客户机的生存期。EJB依赖EJB容器来获取它的需求。EJB通过容器来访问JDBC连接,调用其他EJB和获得它自身的引用或访问特性等。EJB通过回调方法、EJBContext和Java命名和目录接口(JNDI)与容器交互。(5)会话Bean的数据会在EJB服务器运行失败时被删除。实体Bean代表一个存储在持久性存储器中的实体的对象视图。消息驱动Bean,使得EJB容器能够异步地接收消息。

    对于多数据库访问,EJB技术可以提供一个比较强大、灵活的解决方案。首先构造多个会话Bean,在这些模型组件里,我们要处理数据库的连接、定义,查找、插入、删除操作等方法,然后创建和部署EJB,这样可以实现对多数据库的访问。会话Bean的结构如下:

    public class DatabaseConnectSessionBean implements javax.ejb.SessionBean
    {
    ……
    public int checkUserLogin(String userid,String password)
    throw NameingException,SQLException
    {
    ……

    //得到初始上下文

    InitialContext ic=new InitialContext();

    //获得数据源

    DataSource ds=(DataSource) ic.lookup(数据库JDNI名字);

    //建立数据库连接

    Connection conn=null;
    try{
    conn ds.getConnection(数据库用户名,数据库用户密码);
    //进行数据库数据的操作
    }
    }
    }


    从上述的过程和语句我们可以发现,使用EJB技术可以访问各种不同类型的数据库,而且支持数据库的“事务”的机制,这样使对数据的处理能够保证数据的一致性。所以使用EJB技术能实现对多个数据库的访问,而且安全性、持续、事物、并行性和资源的管理由容器来管理,这样使编程具有简单性。

    结束语

    EJB技术是解决异构数据库环境下的多数据库信息处理一种有效的方法。它不但可以解决数据库异构的问题,更是解决操作系统异构的最有效的方法。这样可以达到不同信息资源的共享及信息的综合统计查询,这也是企事业单位迫切要解决的实际问题。我们认为EJB技术能更好的解决异构数据库环境下的电子商务和电子政务方面的信息交换问题。

     


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多