使用 Oracle SQL Developer 时,我注意到它有一个“Java”目录(如图所示)。
我假设它的目的是在数据库中存储 Java 源代码/类代码。我还假设这意味着可以从 DBMS 中执行 Java 代码。我查看了帮助文档以获取这方面的证据,但只在Java Sources下找到了以下内容:
可以在数据库中创建和管理 Java 源。
我不清楚以下任何一项(除 1 外)是否为真:
陈述 2 和 3 中哪个(如果有)是正确的?如果不仅用于存储,该目录的用途是什么?将源代码存储在数据库中而不是使用诸如 git 之类的版本控制工具是否有优势?
感谢 Alex Poole 提供 Oracle 文档的链接,其中说明了以下内容:
来自 Oracle 的“使用 Java”文档:
您可以在数据库中编写和加载 Java 应用程序,因为它是一种具有许多安全功能的安全语言。
[...] 客户端调用 Java 存储过程的方式与调用 PL/SQL 存储过程的方式相同。
来自 Oracle 的Java Programming in Oracle Database文档:
Java 存储过程作为 PL/SQL 的 Java 等价物和伴侣:Java 存储过程与 PL/SQL 紧密集成。您可以从 PL/SQL 包调用 Java 存储过程,也可以从 Java 存储过程调用 PL/SQL 过程。
Java 存储过程是在服务器上编写和部署并从服务器运行的 Java 程序,与 PL/SQL 存储过程完全一样。您可以使用 SQL*Plus 等产品直接调用它,或者使用触发器间接调用它。您可以从任何 Oracle Net 客户端访问它,例如 OCI 和 PRO*,或者 JDBC 或 SQLJ。
此外,您可以使用 Java 开发强大的服务器端程序,这些程序可以独立于 PL/SQL。Oracle 数据库提供了标准 Java 编程语言的完整实现和完全兼容的 JVM。
您可以从 Java 调用现有的 PL/SQL 程序,也可以从 PL/SQL 调用 Java 程序。该解决方案保护和利用您的 PL/SQL 和 Java 代码,并打开基于 Java 的 Internet 计算的优势和机会。
Oracle 数据库提供了两种不同的 Java API 来访问 SQL 数据:JDBC 和 SQLJ。这两个 API 在客户端都可用,JDBC API 在服务器上也可用。因此,您可以在客户端和服务器上部署应用程序。
来自“存储过程和运行时上下文”文档:
存储过程是发布到 SQL 并存储在数据库中供一般使用的 Java 方法。要发布 Java 方法,您需要编写调用规范,这些规范将 Java 方法名称、参数类型和返回类型映射到它们的 SQL 对应项。
当由客户端应用程序调用时,存储过程可以接受参数、引用 Java 类并返回 Java 结果值。
您可以以与 PL/SQL 存储过程相同的方式运行 Java 存储过程。通常,对 Java 存储过程的调用是数据库操作的结果,因为它通常是触发器或 SQL DML 调用的结果。要调用 Java 存储过程,您必须通过调用规范发布它。
这使我明白:
public class Oscar {
// return a quotation from Oscar Wilde
public static String quote() {
return "I can resist everything except temptation.";
}
}
CREATE FUNCTION oscar_quote RETURN VARCHAR2 AS LANGUAGE JAVA
NAME 'Oscar.quote() return java.lang.String';
VARIABLE theQuote VARCHAR2(50);
CALL oscar_quote() INTO :theQuote;
PRINT theQuote;
如果程序使用标准 JVM 外部的库,它们首先需要通过loadjava
命令行实用程序加载。例如:
loadjava -user USERNAME/password@sid -resolve /path/to/externalLib.jar
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句