Oracle DB 12c/SQL Developer 中 Java 目录的用途是什么?

敏捷盗贼

使用 Oracle SQL Developer 时,我注意到它有一个“Java”目录(如图所示)。

SQL Developer - Java 目录

我假设它的目的是在数据库中存储 Java 源代码/类代码。我还假设这意味着可以从 DBMS 中执行 Java 代码。我查看了帮助文档以获取这方面的证据,但只在Java Sources下找到了以下内容

可以在数据库中创建和管理 Java 源。

我不清楚以下任何一项(除 1 外)是否为真:

  1. 可以在数据库中存储 Java 源代码/类。
  2. Java 代码/应用程序可以在 RDBMS 环境内运行,而不仅仅是在它的外部运行。
  3. DBMS 的插件/扩展/附加模块可以用 Java 编写。

陈述 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 存储过程,您必须通过调用规范发布它。

这使我明白:

  1. Java 目录是 DB 本身的一部分,而不是 SQL Developer。
  2. 此目录的目的用于存储通过可调用函数定义存储过程(及其辅助方法)的 Java 类,例如:1

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

  1. 运行 Java 存储过程

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

/ * + * /在Oracle SQL中的用途是什么?

Oracle DB 中的 changelog 列是什么?

Java:URLConnection中的setDoInput的用途是什么

java中接口的实际用途是什么?

Java 8中MetaSpace的用途是什么?

Java Swing中AccessibleContext的用途是什么?

Java中“枚举”的用途是什么?

Linux中pts目录的用途是什么

Oracle SQL Developer 中的 DB2 SQL 错误-=-204、SQLSTATE=42704、SQLERRMC=SYSCAT.SCHEMATA

什么是temp?在Java中temp的用途是什么?

在Oracle SQL Developer自动跟踪中LAST_CR_BUFFER_GETS是什么意思

Java中pom.xml文件的用途是什么?

Java中long,double,byte,char的用途是什么?

Java中枚举单例的用途是什么?

AEM中png.java的用途是什么

Java 8中“ System.out :: println”的用途是什么

Java中垃圾回收器方法的用途是什么?

Java类中变量影子的用途是什么?

在Java EE中,通过initializedName进行InitialContext的用途是什么?

Java中静态同步方法的用途是什么?

Java 8中构造函数引用的用途是什么

Java中私有静态变量的用途是什么?

java.lang.Class中的cachedConstructor字段的用途是什么?

java工具中agentmain方法的用途是什么

Java中关闭钩子的实际用途是什么

Angular 2模块中的esm目录的用途是什么?

android studio中test目录的用途是什么?

laravel 4中public / packages目录的用途是什么

为什么oracle用户定义函数在Oracle Sql Developer 4.0.3.16中显示错误