当前位置: 首页 > news >正文

Oracle数据库中的Java概述

Oracle数据库中的Java概述

Java概述

Java 已成为面向对象的编程语言的选择。Java 包括以下特性:
1、Java 虚拟机 (JVM),提供了平台独立性的基础
2、自动化的存储管理技术,例如垃圾回收
3、从 C 语言借鉴的强类型语言语法

Oracle数据库为 Java 程序提供了一个动态的数据处理引擎,支持复杂的查询和数据的多个视图。客户端请求被装配为数据查询,以备立即处理。查询结果是动态生成的。

Java 和 Oracle 数据库的结合优点

1、可创建基于组件的、 以网络为中心的应用程序,并可以轻松地随业务需求的变化而变化。
2、可以将应用程序和数据存储,从桌面移到智能网络和以网络为中心的服务器上。
3、更重要的是,可以从任何客户端设备来访问这些应用程序和数据存储。

下图显示了传统的两层客户端/服务器配置,客户端使用与调用 PL/SQL 子程序相同的方式,来调用 Java 存储过程。

image-20260416153349096

Java 简介

Java 虚拟机 (JVM) 的概述

JVM 是一个运行已编译 Java 代码的虚拟处理器。
Java 源代码被编译为称为字节码的、独立于平台的低级计算机指令。
Java 字节码通过 JVM 解释为平台依赖的操作。

Oracle JVM 概述

Oracle JVM 是一个完整的、符合 Java2 标准的环境,用于运行纯 Java 应用程序。
它与 JLS 和 JVM 规范兼容。
它支持 Java 的标准二进制格式和API。
Oracle 数据库遵从标准的 Java 语言语义,包括在运行时动态加载类。

下图展示了 Oracle Java 应用程序如何位于 Java 核心类库之上,而 Java 核心类库又位于 Oracle JVM 之上。由于 Oracle Java 支持系统位于数据库内部,JVM 与数据库库进行交互,而不是直接与操作系统进行交互。

image-20260416153930284

与其他的 Java 环境不同, Oracle JVM 是内嵌于数据库中的。Oracle JVM 和典型的客户端 JVM 之间存在一些重要的差异。例如,在一个标准的 Java 环境中,通过在命令行上向解释器发出下面的命令来运行 Java 应用程序,其中 classname 是你希望 JVM 首先解释的类名:
java classname
上述命令会使应用程序在你的操作系统中的一个进程中运行。但是,如果不使用命令行界面,则必须将应用程序加载到数据库中,发布接口,然后在数据库数据字典中运行该应用程序。

Oracle JVM 的主要组件

Oracle JVM 通过共享其内存堆,并直接访问其关联数据,与数据库内核运行在同一个进程空间。这种设计优化了内存使用并提高了吞吐量。

Oracle JVM 提供了一个 Java 对象的运行时环境。它完全支持 Java 数据结构、方法调度、 异常处理、和语言级线程。它还支持所有核心 Java 类库,包括 java.lang、 java.io、 java.net、 java.math、和 java.util。

Oracle JVM 在数据库模式中嵌入标准 Java 命名空间。此特性使 Java 程序能够访问整个企业范围内的数据库和应用程序服务器中的 Java 对象。

Oracle JVM 与可扩展的、 共享的数据库内存体系结构紧密集成。
Java 程序有效地使用调用、 会话、和对象生存期,而无需用户干预。这样,Oracle JVM 和中间层 Java 业务对象,即使处于长会话状态,仍然具有可扩展性。

下图显示 Oracle JVM 的主要组件

image-20260416154324772

Java 编程环境

Oracle 为企业应用程序开发人员提供了一个端到端的 Java 解决方案,用于创建、 部署、并管理 Java 应用程序。该解决方案包含客户端和服务器端的编程接口、支持 Java 开发的工具、和与 Oracle 数据库集成的 Java 虚拟机。所有这些产品都与 Java 标准兼容。

Java 编程环境还包括以下额外功能:
1、Java 存储过程类似于 Java,经常和 PL/SQL 配合使用。Java 存储过程与 PL/SQL 紧密集成。可以从 PL/SQL 包调用 Java 存储过程,或从 Java 存储过程调用 PL/SQL 存储过程。
2、用于访问 SQL 数据的 SQLJ 和 JDBC 编程接口。
3、用于辅助开发、 加载、和管理 Java 类的工具和脚本。

Java 存储过程

Java 存储过程是一个发布到 SQL、 并存储在数据库中的 Java 方法。与PL/SQL 子程序类似, Java 存储过程可以从 SQL * Plus 之类的产品直接调用,或从一个触发器间接调用。可以从任何 Oracle Net 客户端访问它——如 OCI、预编译器、或 JDBC 等。

若要发布 Java 方法,需要编写调用规范,以映射 Java 方法名称、参数类型、及其与 SQL 对应的返回类型。当被客户端应用程序调用时, Java 存储过程可以接受参数、 引用 Java 类、并返回 Java 结果值。

应用程序通过引用调用规范的名称来调用 Java 方法。运行时系统在 Oracle 数据字典中查找调用规范的定义,并运行相应的 Java 方法。

此外,可以使用 Java 来开发功能强大的独立于 PL/SQL 的程序。Oracle 数据库提供了一个与 Java 编程语言和 JVM 完全兼容的实现。

Java和PL/SQL集成

可以从 Java 调用现有 PL/SQL 程序,或从 PL/SQL 调用 Java 程序。此解决方案能保护和利用的PL/SQL 和 Java 代码。

Oracle 数据库提供了两种不同的方法从 Java、 JDBC、和 SQLJ 访问 SQL 数据。这两种方法都可用在客户端或服务器上。这样一来,可以将应用程序部署在客户端或服务器上,而无需修改代码。

JDBC 驱动程序

JDBC 是一种数据库访问协议,能够连接到数据库,并对数据库运行SQL 语句和查询。核心 Java 类库仅提供一个 JDBC API, java.sql。但是,JDBC 被设计为允许供应商针对特定数据库提供所需的特殊的驱动程序。Oracle 提供了下表中所示的不同 JDBC 驱动程序。

1、JDBC 瘦驱动程序

可以使用 JDBC 瘦驱动程序来编写纯 Java 应用程序和访问Oracle SQL 数据的小程序。JDBC 瘦驱动程序特别适合基于Web 的应用程序和小程序,因为可以从 Web 页动态地下载它,与下载任何其他 Java 小程序类似。

2、JDBC OCI 驱动程序

JDBC OCI 驱动程序访问特定于 Oracle 的本地代码(即:非Java 的代码)和客户端或中间层上的库,相比 JDBC 瘦驱动程序,提供了性能的提升,其代价是尺寸明显变大,且需要客户端安装。

3、JDBC 服务器端内部驱动程序

当 Java 代码在服务器上运行时,Oracle 数据库使用服务器端内部驱动程序。它允许 Java 应用程序在服务器上的 Oracle JVM 中运行,以访问在本地定义的数据,即与 JDBC 在同一系统上,且在同一进程中的数据。由于具有使用底层的 Oracle RDBMS 库的能力,而没有 Java 代码和 SQL 数据之间网络连接的开销,其性能大大提高。通过在服务器上支持相同的 Java-SQL 接口,Oracle 数据库不需要你重新编码代码来部署它。

SQLJ

SQLJ 是一个用于在 Java 程序中嵌入 SQL 语句的 ANSI 标准。可以在Oracle 数据库的存储过程、 触发器、和方法等环境中使用 SQLJ。此外,可以将 SQLJ 程序和 JDBC 组合使用。

SQLJ 提供了一种简单、但功能强大的方法,来开发 Java 客户端和中间层应用程序,以访问数据库。开发人员将使用 SQLJ 来编写程序,然后使用 SQLJ 翻译器将嵌入式的 SQL 翻译为完全基于 JDBC 的 Java 代码。运行时,程序可以使用标准的 JDBC 驱动程序与各种供应商的数据库进行通信。

简单案例

下面的示例显示了一个简单的 SQLJ 可执行语句:
String name;
#sql { SELECT first_name INTO :name FROM employees WHERE employee_id=112 };
System.out.println("Name is " + name + ", employee number = " + employee_id);

由于 Oracle 数据库提供了一个完整的 Java 环境,不能在客户端上编译将在数据库上运行的 SQLJ 程序。相反,可以直接在服务器上编译它们。

http://www.jsqmd.com/news/796249/

相关文章:

  • FileZilla中文乱码终结指南:从字符集原理到一键修复
  • ICC II 布线优化实战:从 route_auto 到 route_opt 的全流程解析
  • 3个理由告诉你为什么Mem Reduct是Windows内存优化的最佳选择
  • 明日方舟智能基建管理工具完整使用指南
  • 终极指南:如何用FanControl轻松掌控Windows风扇散热优化
  • CES 2012启示录:移动互联、生态连接与硬件创新的产业转折点
  • 2026年人才盘点公司榜单分析:值得信赖的人才盘点企业/值得信赖的人才盘点老牌机构/比较不错的人才盘点老牌公司 - 品牌策略师
  • 年轻人的财务小智慧:如何把闲置消费额度变成灵活现金流 - 团团收购物卡回收
  • Honey Select 2 HF Patch:200+插件整合补丁,打造完美游戏体验
  • Excel取消隐藏列的底层原理与4种实战方法
  • CoverM深度解析:如何高效配置PacBio HiFi宏基因组数据覆盖率分析的完整指南
  • RT-Thread实战:小熊派上BH1750光照数据采集与MQTT上云完整流程(附源码)
  • VirtualBox 6.1.x 在 Windows 11 上部署 CentOS 8 Stream 实战指南
  • 把树莓派变成监控摄像头:CSI相机+FFmpeg推流到Home Assistant/萤石云完整教程
  • OpenWrt系统-树莓派WAN、LAN、WIFI接口配置
  • 别再把Agent知识库做成“数据大礼包”了
  • 2026年无锡充电桩运营系统与江苏社区生态物联解决方案深度横评指南 - 企业名录优选推荐
  • 终极解决方案:如何一键安装所有Visual C++运行库,彻底告别DLL缺失错误
  • Photon光影包终极配置指南:10个步骤打造电影级Minecraft画质
  • PyTorch模型保存加载避坑指南:从state_dict到checkpoint,这5种场景你都会了吗?
  • RPG Maker终极插件宝典:100+免费插件打造主机级游戏体验
  • EVK-M101,高性能,低功耗的GNSS定位技术评估套件
  • SDR++终极使用指南:掌握跨平台软件定义无线电的完整教程
  • AI账号自动化管理工具集:从注册到运维的全流程实战指南
  • VBA二维数组构建(2/2)-- 从工作表到代码的进阶赋值
  • BME280传感器实战:从硬件连接到嵌入式软件驱动开发
  • To B 定位,是要回答好这四个问题
  • 终极指南:如何用New API统一管理所有AI模型接口
  • 告别手工账!用SAP自动记账处理采购价差与发票价差(附MIRO/MIGO操作截图)
  • B站字幕下载工具:5分钟掌握免费获取视频字幕的完整指南