簡體   English   中英

Oracle:Java存儲過程限制

[英]Oracle: Java Stored Procedures limitation

我知道Oracle中的存儲過程可以用PL / SQL和Java進行編碼。

我可以知道什么是優點和缺點。

我正在考慮通過PL / SQL認證,但是我發現PL / SQL與Java SP相比沒有太多優勢。

第二,我發現我的大多數開發人員都是Java專業人士,因此在Java上開發SP更加有意義,因此他們不必學習其他語言。 (減少開發時間和復雜性)

1)所以我應該堅持用Java編寫SP嗎?

我在編寫Java存儲過程方面有一些經驗,因此我認為可以肯定地介紹一下這個主題。 我和另一位主要開發人員一起將Oracle的工作流-從PL / SQL遷移到Java存儲過程的核心引擎,從VC ++遷移到Eclipse RCP的WF Builder和Runtime Viewer。

為什么我們選擇Java SP?

  • 將來,WF Engine可能會從數據庫中移出到專用的App Server中。
  • 工作流需要觸發並響應事件。 使用JMS可以輕松完成。
  • Oracle還提供了一個稱為AQ(高級隊列)的JMS實現。
    • AQ由數據庫表支持。 因此,查詢UI的事件數據非常容易。
    • 從Java存儲過程訪問AQ既快速又簡單(沒有網絡開銷)。

面臨的問題

  • JVM支持不是最新的。 我們必須支持Oracle 9,因此編寫了要在JDK 1.3上運行的引擎,這真是讓人頭疼。 Oracle 10遷移到JDK 1.4,並且我認為JDK 1.6現在看起來要好得多。我知道,Oracle 11中對JDK 1.5的支持仍然落后。
  • 有時,您確實遇到了最適合使用Trigger或Ref游標(即某些PL / SQL構造)的情況。 如果必須將應用程序純粹用Java編寫,則可能必須尋求解決方法。 否則,您可以在PL / SQL中實現該功能並從Java中調用它。 我們沒有這種自由。

簡而言之:

通過PL / SQL的Java

  • PL / SQL是一種過程語言,Java是一種面向對象的語言
  • Java還有更多的第三方庫
  • 即使使用所有其他庫,PL / SQL的功能也受到限制

Java上的PL / SQL

  • 開發小型程序很容易
  • 它具有更自然的構造,可直接在表中進行數據操作
  • 有時,即使由Oracle開發並使用其官方網站上的手冊,部署Java 3rd party庫也非常困難(它可以在一個DB版本中工作,而不能在另一個DB版本中工作)

但是,在大多數情況下,PL / SQL是開發存儲過程的一種更可取的方法。 如果使用PL / SQL無法解決問題,那么這就是在存儲過程范圍之外搜索解決方案的原因。 首先,OracleDB是一個數據庫,它可以讓您保留邏輯作為獎勵,但是它不是應用程序服務器...順便說一下,Oracle具有Java應用服務器。

但是有時您需要存儲過程/功能,唯一的方法是使用具有擴展功能的功能齊全的語言/環境。 在這種情況下(對於Oracle),Java是最簡單的方法,比用C / C ++開發要容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM