4

我知道 Oracle 中的存储过程可以用 PL/SQL 和 Java 编写。

请问有什么优点和缺点。

我正在考虑参加 PL/SQL 的认证,但我发现 PL/SQL 与 Java SP 相比并没有太大的优势。

第二,我发现我的大多数开发人员都是 Java 专业人士,因此在 Java 上开发 SP 更有意义,这样他们就不必学习另一种语言。(减少开发时间和复杂性)

1)那么我应该坚持用Java编写SP吗?

4

2 回答 2

4

我在编写 Java 存储过程方面有一些经验,所以我想我绝对可以对这个主题有所了解。我与另一位首席开发人员一起将 Oracle 的工作流程——其核心引擎从 PL/SQL 移植到了 Java 存储过程,将 WF Builder 和运行时查看器从 VC++ 移植到了 Eclipse RCP。

为什么我们选择 Java SP?

  • WF Engine 将来可能会从数据库中移出到专用的应用服务器上。
  • 工作流需要触发和响应事件。使用 JMS 很容易完成。
  • Oracle 还提供了一个名为 AQs(高级队列)的 JMS 实现。
    • AQ 由数据库表支持。因此,查询 UI 的事件数据相当容易。
    • 从 Java 存储过程访问 AQ 既快速又简单(没有网络开销)。

面临的问题

  • JVM 支持不是最新的。我们必须支持 Oracle 9,所以编写了在 JDK 1.3 上工作的引擎,这让我们很头疼。Oracle 10 迁移到 JDK 1.4,我认为现在有了 JDK 1.6,情况看起来好多了。我知道 Oracle 11 对 JDK 1.5 的支持仍然落后。
  • 有时您确实会遇到最适合使用触发器或引用游标的情况,即某些 PL/SQL 构造。如果您必须让您的应用程序完全使用 Java,您可能必须寻求一种解决方法。否则,您可以在 PL/SQL 中实现该功能并从 Java 调用它。我们没有这种自由。
于 2013-05-06T17:20:56.587 回答
2

简而言之:

PL/SQL 上的 Java

  • PL/SQL 是一种过程语言,Java 是一种面向对象的语言
  • Java 有更多的 3rd 方库
  • PL/SQL 的功能是有限的,即使有所有额外的库

Java 上的 PL/SQL

  • 开发小而简单的程序要容易得多
  • 它具有更自然的结构,可直接在表中进行数据操作
  • 有时很难部署 Java 3rd 方库,即使是由 Oracle 开发并使用其官方网站上的手册(它可以在一个版本的 DB 中工作,但不能在其他版本中工作)

但是,在大多数情况下,PL/SQL 是开发存储过程的更可取的方式。如果您无法使用 PL/SQL 解决问题,那么有理由在存储过程范围之外搜索解决方案。首先,OracleDB 是一个数据库,它允许您在其中保留逻辑作为奖励,但它不是应用程序服务器……顺便说一下,Oracle 有 Java 应用程序服务器。

有时您需要存储过程/函数,唯一的方法是使用具有扩展功能的全功能语言/环境。在这种情况下,Java 是最简单的方法(对于 Oracle),比使用 C/C++ 开发要容易得多。

于 2013-05-06T17:59:15.397 回答