Java技術(shù)在多數(shù)據(jù)庫系統(tǒng)中的應(yīng)用研究

字號:

現(xiàn)在的各種數(shù)據(jù)庫應(yīng)用,由于技術(shù)、歷史等因素,往往在一個大的部門中并存有多個應(yīng)用系統(tǒng)。這些應(yīng)用系統(tǒng)可能分散于不同的網(wǎng)絡(luò)節(jié)點、基于不同的操作平臺、使用不同的數(shù)據(jù)庫管理系統(tǒng),且各子系統(tǒng)封閉運行,自成一體,這樣給不同部門的信息資源共享帶來困難。如何在不改變原來系統(tǒng)的內(nèi)部信息的前提下,完成不同數(shù)據(jù)庫系統(tǒng)間的數(shù)據(jù)訪問和交換是值得研究的問題。
    多數(shù)據(jù)庫系統(tǒng)的Java解決方案
    多數(shù)據(jù)庫系統(tǒng)的構(gòu)成有多種方式,在這些方式中,我們考察這些多數(shù)據(jù)庫的不同點,其主要表現(xiàn)在以下幾個方面的異構(gòu):
    (1)數(shù)據(jù)庫邏輯數(shù)據(jù)模型的異構(gòu):有層次、網(wǎng)狀、關(guān)系、對象-關(guān)系和對象五種數(shù)據(jù)庫。
    (2)數(shù)據(jù)庫物理數(shù)據(jù)模型的異構(gòu):物理數(shù)據(jù)模型反映數(shù)據(jù)庫存儲結(jié)構(gòu),例如物理塊、指針、索引等,即使邏輯數(shù)據(jù)模型相同,如關(guān)系數(shù)據(jù)庫的ORACLE、SYBASE、DB2等,其物理數(shù)據(jù)模型也存在差異。
    (3)操作系統(tǒng)的異構(gòu):UNIX、WINDOWS系列、MacOS、OS/2、DOS等。
    (4)計算機平臺的異構(gòu):從巨、大、中、小型機到工作站,微機以及手持機。
    (5)網(wǎng)絡(luò)的異構(gòu):LAN、WAN、以太總線結(jié)構(gòu)與令牌環(huán)結(jié)構(gòu)等。
    在這些異構(gòu)中,有些是數(shù)據(jù)庫歷史所造成的,如層次、網(wǎng)狀類型的數(shù)據(jù)庫;有些是不同的數(shù)據(jù)庫開發(fā)商開發(fā)的不同的數(shù)據(jù)庫管理系統(tǒng)造成的;有些是計算機操作系統(tǒng)的不同;而有些是網(wǎng)絡(luò)結(jié)構(gòu)和計算機平臺的原因。對于這些不同,從目前來看,我們認(rèn)為當(dāng)前應(yīng)該著重解決的在關(guān)系模式下的不同的操作系統(tǒng)和不同數(shù)據(jù)庫管理系統(tǒng)。
    眾所周知,Java技術(shù)是全新的編程技術(shù),它具有平臺無關(guān)性、面向?qū)ο蟆踩?、高性能、分布式,多線程等特點,使Java成為當(dāng)前最為類型的編程語言和平臺。對于多數(shù)據(jù)庫系統(tǒng)聯(lián)合訪問和數(shù)據(jù)交換,使用Java技術(shù)可以解決不同的操作系統(tǒng)和不同的數(shù)據(jù)庫管理系統(tǒng)之間的數(shù)據(jù)處理。
    1)使用Java Bean技術(shù)實現(xiàn)多數(shù)據(jù)庫的訪問
    Java Bean是一個Java模型組件,它為使用Java類提供了一種標(biāo)準(zhǔn)的格式,在用戶程序和可視化管理工具中可以自動獲得這種具有標(biāo)準(zhǔn)格式的類的信息,并能夠創(chuàng)建和管理這些類。
    基于Web的多數(shù)據(jù)庫訪問是電子商務(wù)和電子政務(wù)迅速發(fā)展而出現(xiàn)的一種多數(shù)據(jù)庫聯(lián)合應(yīng)用的形式。在數(shù)據(jù)庫異構(gòu),操作系統(tǒng)異構(gòu)的條件下,對于數(shù)據(jù)量很大的這種多數(shù)據(jù)庫應(yīng)用問題,只有Java 技術(shù)才有能力解決。
    對于在Web下的多數(shù)據(jù)庫訪問,Java的新技術(shù)是Servlet。Java Servlet是在服務(wù)器端運行的Java程序?,F(xiàn)在隨著Servlet API2.3版的引入,服務(wù)器的Servlet將把Java Web軟件開發(fā)帶向更高的層次。Servlet提供了快捷、強大、靈活的開發(fā)環(huán)境。開發(fā)出來的Servlet可以在服務(wù)器的進程空間里運行,并能同時處理多個請求。當(dāng)然,最值得稱道的是Servlet的平臺無關(guān)性。
    對于基于Web的多數(shù)據(jù)庫訪問,Java Bean技術(shù)可以提供一個比較強大、靈活的解決方案。首先構(gòu)造多個Java Bean,在這些模型組件里,我們要處理數(shù)據(jù)庫的連接、定義,查找、插入、刪除操作等方法,并要實現(xiàn)多線程,然后構(gòu)造編寫調(diào)用Java Bean的Servlet,這樣可以實現(xiàn)對多數(shù)據(jù)庫的訪問。Java Bean的結(jié)構(gòu)如下:
    public class DatabaseConnectBean
    {
    定義數(shù)據(jù)庫連接的成員;
    定義連接的方法{ }
    ……
    }
    在Servlet中調(diào)用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
    {
    ……
    //創(chuàng)建Java Bean的對象
    DatabaseConnectBean conBean=new DatabaseConnectBean(……);
    //使用conBean進行數(shù)據(jù)庫的操作
    ……
    }
    }
    從上述的過程和語句我們可以發(fā)現(xiàn),使用Servlet技術(shù)可以訪問各種不同類型的數(shù)據(jù)庫,但是使用Servlet技術(shù)下的Java Bean技術(shù)要保證數(shù)據(jù)庫數(shù)據(jù)的一致性,應(yīng)在Java Bean中我們可以使用Java的線程技術(shù)中的同步等方法來實現(xiàn)對數(shù)據(jù)庫的連接、操作,但這樣將加大程序員的編程實現(xiàn)。所以使用Servlet技術(shù)下的Java Bean能同時對多個數(shù)據(jù)庫實體的訪問,但實現(xiàn)起來不方便。