Java技术在多数据库系统中的应用研究
在學(xué)習(xí)編程的過程中,我覺得不止要獲得課本的知識,更多的是通過學(xué)習(xí)技術(shù)知識提高解決問題的能力,這樣我們才能走在最前方,更多Java專業(yè)知識,廣州瘋狂java培訓(xùn)為你講解;
摘 要 本文討論的是在多種異構(gòu)數(shù)據(jù)庫下,如何進(jìn)行多數(shù)據(jù)庫的訪問,并分析了使用Java技術(shù)下的各種方法進(jìn)行多種異構(gòu)數(shù)據(jù)庫下的數(shù)據(jù)交換。
關(guān)鍵詞 異構(gòu)數(shù)據(jù)庫;EJB;Servlet
引言
現(xiàn)在的各種數(shù)據(jù)庫應(yīng)用,由于技術(shù)、歷史等因素,往往在一個(gè)大的部門中并存有多個(gè)應(yīng)用系統(tǒng)。這些應(yīng)用系統(tǒng)可能分散于不同的網(wǎng)絡(luò)節(jié)點(diǎn)、基于不同的操作平臺、使用不同的數(shù)據(jù)庫管理系統(tǒng),且各子系統(tǒng)封閉運(yùn)行,自成一體,這樣給不同部門的信息資源共享帶來困難。如何在不改變原來系統(tǒng)的內(nèi)部信息的前提下,完成不同數(shù)據(jù)庫系統(tǒng)間的數(shù)據(jù)訪問和交換是值得研究的問題。
多數(shù)據(jù)庫系統(tǒng)的Java解決方案
多數(shù)據(jù)庫系統(tǒng)的構(gòu)成有多種方式,在這些方式中,我們考察這些多數(shù)據(jù)庫的不同點(diǎn),其主要表現(xiàn)在以下幾個(gè)方面的異構(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ù)庫存儲(chǔ)結(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)計(jì)算機(jī)平臺的異構(gòu):從巨、大、中、小型機(jī)到工作站,微機(jī)以及手持機(jī)。
(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)造成的;有些是計(jì)算機(jī)操作系統(tǒng)的不同;而有些是網(wǎng)絡(luò)結(jié)構(gòu)和計(jì)算機(jī)平臺的原因。
對于這些不同,從目前來看,我們認(rèn)為當(dāng)前應(yīng)該著重解決的在關(guān)系模式下的不同的操作系統(tǒng)和不同數(shù)據(jù)庫管理系統(tǒng)。
眾所周知,Java技術(shù)是全新的編程技術(shù),它具有平臺無關(guān)性、面向?qū)ο蟆踩⒏咝阅堋⒎植际?#xff0c;多線程等特點(diǎn),使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ù)實(shí)現(xiàn)多數(shù)據(jù)庫的訪問
Java Bean是一個(gè)Java模型組件,它為使用Java類提供了一種標(biāo)準(zhǔn)的格式,在用戶程序和可視化管理工具中可以自動(dòng)獲得這種具有標(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ù)器端運(yùn)行的Java程序。現(xiàn)在隨著Servlet API2.3版的引入,服務(wù)器的Servlet將把Java Web軟件開發(fā)帶向更高的層次。Servlet提供了快捷、強(qiáng)大、靈活的開發(fā)環(huán)境。開發(fā)出來的Servlet可以在服務(wù)器的進(jìn)程空間里運(yùn)行,并能同時(shí)處理多個(gè)請求。當(dāng)然,最值得稱道的是Servlet的平臺無關(guān)性。
對于基于Web的多數(shù)據(jù)庫訪問,Java Bean技術(shù)可以提供一個(gè)比較強(qiáng)大、靈活的解決方案。首先構(gòu)造多個(gè)Java Bean,在這些模型組件里,我們要處理數(shù)據(jù)庫的連接、定義,查找、插入、刪除操作等方法,并要實(shí)現(xiàn)多線程,然后構(gòu)造編寫調(diào)用Java Bean的Servlet,這樣可以實(shí)現(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進(jìn)行數(shù)據(jù)庫的操作
……
}
}
從上述的過程和語句我們可以發(fā)現(xiàn),使用Servlet技術(shù)可以訪問各種不同類型的數(shù)據(jù)庫,但是使用Servlet技術(shù)下的Java Bean技術(shù)要保證數(shù)據(jù)庫數(shù)據(jù)的一致性,應(yīng)在Java Bean中我們可以使用Java的線程技術(shù)中的同步等方法來實(shí)現(xiàn)對數(shù)據(jù)庫的連接、操作,但這樣將加大程序員的編程實(shí)現(xiàn)。所以使用Servlet技術(shù)下的Java Bean能同時(shí)對多個(gè)數(shù)據(jù)庫實(shí)體的訪問,但實(shí)現(xiàn)起來不方便。
2)使用EJB技術(shù)實(shí)現(xiàn)多數(shù)據(jù)庫的訪問
EJB是Sun定義的一組標(biāo)準(zhǔn)的Java擴(kuò)展的開發(fā)接口,稱為EntERPrise Java Bean API。這些應(yīng)用程序編程接口(API)為各種各樣的中間件實(shí)現(xiàn)了不依賴供應(yīng)商的編程接口,Enterprise Java Bean技術(shù)把Java組件的概念從客戶機(jī)域擴(kuò)展到了服務(wù)器域,它使Java技術(shù)發(fā)展成為一種強(qiáng)健的、可伸縮的環(huán)境,能夠支持以任務(wù)為關(guān)鍵的企業(yè)信息系統(tǒng)。
Enterprise Bean運(yùn)行在EJB容器中。EJB容器在運(yùn)行時(shí)管理Enterprise Bean的各個(gè)方面,包括遠(yuǎn)程訪問Bean、安全性、持續(xù)、事物、并行性和資源的訪問與合用等。
EJB容器不允許客戶機(jī)應(yīng)用程序直接訪問Enterprise Bean。當(dāng)客戶機(jī)應(yīng)用程序調(diào)用Enterprise Bean上的遠(yuǎn)程方法時(shí),容器首先攔截調(diào)用,以確保持續(xù)、事物和安全性都正確應(yīng)用于客戶機(jī)對EJB執(zhí)行的每一個(gè)操作。
EJB組件分為3種主要類型:會(huì)話Bean(Session Bean)、實(shí)體Bean(Entity Bean)和消息驅(qū)動(dòng)Bean(Message-Driven Bean)。會(huì)話Bean實(shí)現(xiàn)某些在服務(wù)器上運(yùn)行的業(yè)務(wù)邏輯。會(huì)話Bean對象不在多臺客戶機(jī)之間共享。其特點(diǎn)是(1)它代表單個(gè)客戶機(jī)執(zhí)行。(2)會(huì)話Bean包含事物處理。(3)可以使用會(huì)話Bean更新共享數(shù)據(jù)庫中的數(shù)據(jù)。(4)會(huì)話Bean的生存期就是客戶機(jī)的生存期。EJB依賴EJB容器來獲取它的需求。EJB通過容器來訪問JDBC連接,調(diào)用其他EJB和獲得它自身的引用或訪問特性等。EJB通過回調(diào)方法、EJBContext和Java命名和目錄接口(JNDI)與容器交互。(5)會(huì)話Bean的數(shù)據(jù)會(huì)在EJB服務(wù)器運(yùn)行失敗時(shí)被刪除。實(shí)體Bean代表一個(gè)存儲(chǔ)在持久性存儲(chǔ)器中的實(shí)體的對象視圖。消息驅(qū)動(dòng)Bean,使得EJB容器能夠異步地接收消息。
對于多數(shù)據(jù)庫訪問,EJB技術(shù)可以提供一個(gè)比較強(qiáng)大、靈活的解決方案。首先構(gòu)造多個(gè)會(huì)話Bean,在這些模型組件里,我們要處理數(shù)據(jù)庫的連接、定義,查找、插入、刪除操作等方法,然后創(chuàng)建和部署EJB,這樣可以實(shí)現(xiàn)對多數(shù)據(jù)庫的訪問。會(huì)話Bean的結(jié)構(gòu)如下:
public class DatabaseConnectSessionBean implements javax.ejb.SessionBean
{
……
public int checkUserLogin(String userid,String password)
throw NameingException,SQLException
{
……
//得到初始上下文
InitialContext ic=new InitialContext();
//獲得數(shù)據(jù)源
DataSource ds=(DataSource) ic.lookup(數(shù)據(jù)庫JDNI名字);
//建立數(shù)據(jù)庫連接
Connection conn=null;
try{
conn ds.getConnection(數(shù)據(jù)庫用戶名,數(shù)據(jù)庫用戶密碼);
//進(jìn)行數(shù)據(jù)庫數(shù)據(jù)的操作
}
}
}
從上述的過程和語句我們可以發(fā)現(xiàn),使用EJB技術(shù)可以訪問各種不同類型的數(shù)據(jù)庫,而且支持?jǐn)?shù)據(jù)庫的“事務(wù)”的機(jī)制,這樣使對數(shù)據(jù)的處理能夠保證數(shù)據(jù)的一致性。所以使用EJB技術(shù)能實(shí)現(xiàn)對多個(gè)數(shù)據(jù)庫的訪問,而且安全性、持續(xù)、事物、并行性和資源的管理由容器來管理,這樣使編程具有簡單性。
結(jié)束語
EJB技術(shù)是解決異構(gòu)數(shù)據(jù)庫環(huán)境下的多數(shù)據(jù)庫信息處理一種有效的方法。它不但可以解決數(shù)據(jù)庫異構(gòu)的問題,更是解決操作系統(tǒng)異構(gòu)的最有效的方法。這樣可以達(dá)到不同信息資源的共享及信息的綜合統(tǒng)計(jì)查詢,這也是企事業(yè)單位迫切要解決的實(shí)際問題。我們認(rèn)為EJB技術(shù)能更好的解決異構(gòu)數(shù)據(jù)庫環(huán)境下的電子商務(wù)和電子政務(wù)方面的信息交換問題。
瘋狂Java培訓(xùn)專注軟件開發(fā)培訓(xùn),提升學(xué)員就業(yè)能力,重點(diǎn)提升實(shí)踐動(dòng)手能力。技術(shù)知識沉淀深厚的老師,讓你感受Java的魅力,激發(fā)你對于編程的熱愛,讓你在半年的時(shí)間內(nèi)掌握8-10萬的代碼量,掌握J(rèn)ava核心技術(shù),成為真正的技術(shù)高手;通過大量全真企業(yè)項(xiàng)目瘋狂訓(xùn)練,迅速積累項(xiàng)目經(jīng)驗(yàn)。讓你成為技能型的現(xiàn)代化高端人才,迅速獲得高薪就業(yè)!時(shí)間不等人,趕緊聯(lián)系我們吧!瘋狂java培訓(xùn)中心地址:廣州天河區(qū)車陂灃宏大廈3011。
?
轉(zhuǎn)載于:https://www.cnblogs.com/gojava/p/3234453.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Java技术在多数据库系统中的应用研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDOJ 1175 连连看 DFS
- 下一篇: 机房收费系统上机之逻辑思维