新聞中心
以下的文章主要涉及到Oracle數(shù)據(jù)庫(kù)的開發(fā)人員,講述JAVA的存儲(chǔ)過(guò)程,以及利用Java的存儲(chǔ)過(guò)程來(lái)溝通SQL、和XML、Java、J2EE和Web服務(wù)。存儲(chǔ)過(guò)程(stored procedure)允許將運(yùn)行于數(shù)據(jù)庫(kù)層中的持久性邏輯與運(yùn)行于中間層中的商務(wù)邏輯有效地分離開來(lái)。

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)撫遠(yuǎn)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000多家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
這種分離可以降低整個(gè)應(yīng)用程序的復(fù)雜性,并提供其重用性、安全性、性能和可伸縮性。
但是,妨礙存儲(chǔ)過(guò)程廣泛采用的一個(gè)主要障礙是不同數(shù)據(jù)庫(kù)廠商使用各種專有的、且依賴于數(shù)據(jù)庫(kù)的實(shí)現(xiàn)語(yǔ)言。使用基于Java的存儲(chǔ)過(guò)程可以解決這一問題。Oracle已經(jīng)實(shí)現(xiàn)了ANSI標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)規(guī)定了從SQL中將靜態(tài)Java方法作為過(guò)程或函數(shù)進(jìn)行調(diào)用的能力。這種實(shí)現(xiàn)被簡(jiǎn)單地稱作"Java存儲(chǔ)過(guò)程"。
在本文中,你將了解基于Java的存儲(chǔ)過(guò)程如何幫助簡(jiǎn)化商務(wù)邏輯、提高其性能,并擴(kuò)展數(shù)據(jù)庫(kù)的功能。本文將介紹Oracle數(shù)據(jù)庫(kù)如何在數(shù)據(jù)庫(kù)內(nèi)啟用基于Java的存儲(chǔ)過(guò)程。還會(huì)介紹Java存儲(chǔ)過(guò)程如何訪問數(shù)據(jù),以及如何創(chuàng)建基本Java存儲(chǔ)過(guò)程。
選擇PL/SQL還是Java
在考慮Oracle存儲(chǔ)過(guò)程時(shí),你可能會(huì)想到PL/SQL。不過(guò),從Oracle8i開始,Oracle數(shù)據(jù)庫(kù)已經(jīng)在數(shù)據(jù)庫(kù)中支持Java,從而為存儲(chǔ)過(guò)程提供了不同于PL/SQL的開放式和可移植的方法。我可以聽到"$64 000問題":"我如何在PL/SQL和Java之間做出選擇?我是否應(yīng)當(dāng)忘記已經(jīng)學(xué)習(xí)的所有PL/SQL相關(guān)知識(shí),而變?yōu)橐粋€(gè)Java天地的新手?"
兩種語(yǔ)言都適用于數(shù)據(jù)庫(kù)編程,都有自己的優(yōu)點(diǎn)和弱點(diǎn)。在決定選擇哪一種語(yǔ)言時(shí),可以參考下面根據(jù)經(jīng)驗(yàn)得出的通用規(guī)則:
對(duì)于要求與SQL進(jìn)行無(wú)縫集成的數(shù)據(jù)庫(kù)中心來(lái)說(shuō)則邏輯使用PL/SQL,從而完成對(duì)數(shù)據(jù)庫(kù)對(duì)象、類型和特性的訪問。
出于與數(shù)據(jù)庫(kù)的無(wú)關(guān)性考慮時(shí),可以選擇Java作為開放式的語(yǔ)言來(lái)取代PL/SQL,同時(shí)也為了集成和溝通SQL、XML、J2EE和Web服務(wù)等各個(gè)領(lǐng)域。
OralceJVM使得Java可以運(yùn)行在數(shù)據(jù)庫(kù)中
從Oracle8i版本1(Oralce8.1.5)開始,Oracle便提供緊密集成的Java虛擬機(jī)(JVM),JVM支持Oralce的數(shù)據(jù)庫(kù)會(huì)話期結(jié)構(gòu)。任何數(shù)據(jù)庫(kù)對(duì)話期都可以在第一Java代碼調(diào)用時(shí)啟動(dòng)一個(gè)虛擬上專用的JVM,后續(xù)的用戶可以使用這一已經(jīng)存在的支持Java的會(huì)話期。
事實(shí)上,所有會(huì)話共享同一JVM代碼并保持"僅靜態(tài)"的私有狀態(tài),而垃圾則收集在單個(gè)對(duì)話期空間內(nèi),從而為各個(gè)Java對(duì)話期提供了和SQL操作相同的對(duì)話期隔離和數(shù)據(jù)完整性能力。這里,不需要為了數(shù)據(jù)完整性而進(jìn)行單獨(dú)的Java支持的過(guò)程。這一基于對(duì)話期的結(jié)構(gòu)提供了較小的內(nèi)存占用率,并使OracleJVM具有與Oracle數(shù)據(jù)庫(kù)一樣的線性SMP可伸縮性。
分享標(biāo)題:Oracle數(shù)據(jù)庫(kù)內(nèi)啟用基于Java的實(shí)際存儲(chǔ)過(guò)程解析
文章出自:http://fisionsoft.com.cn/article/dhjjcip.html


咨詢
建站咨詢
