ORM-08-EclipseLink 入门介绍

拓展阅读

The jdbc pool for java.(java 手写 jdbc 数据库连接池实现)

The simple mybatis.(手写简易版 mybatis)

1. EclipseLink概述

本章介绍了EclipseLink及其关键特性:包括在EclipseLink中的组件、元数据、应用程序架构、映射和API。

本章包括以下几个部分:

理解EclipseLink

关键特性

关键概念

关键组件

关键工具

理解EclipseLink

EclipseLink是一个开源的映射和持久化框架,用于在Java环境中使用,包括Java平台标准版(Java SE)和Java平台企业版(Jakarta EE)。EclipseLink项目由Eclipse基金会支持。

EclipseLink完全实现了以下规范,并对这些规范进行了扩展:

1. Jakarta持久性API(JPA)

JPA是用于对象/关系映射(ORM)的Java API,其中Java对象被映射到数据库构件,以便在Java应用程序中管理关系数据。JPA包括Java持久性查询语言(JPQL)、Java持久性标准API和用于定义对象/关系映射元数据的Java API和XML模式。

最新版本的规范是JSR 338:Java持久性2.2。请参阅http://jcp.org/en/jsr/detail?id=338。

一些EclipseLink对标准JPA的扩展包括:对非关系(NoSQL)数据库的映射支持。在软件即服务(SaaS)环境中有用的功能,包括租户隔离、可扩展实体、外部元数据源。用于RESTful Web服务的Java API(JAX-RS,在JSR 311中定义)。许多其他额外的注解、注解扩展、Java持久性查询语言(JPQL)扩展、JPA查询定制扩展和持久性属性扩展。

2. Java XML绑定体系结构(JAXB)

JAXB是用于对象/XML映射(OXM)的Java API,其中XML文档基于XML文档的XSD模式绑定到Java对象。JAXB提供了将XML实例文档解组(读取)为Java内容树的方法,然后将Java内容树组合(写入)回XML实例文档。JAXB还提供了从Java对象生成XML模式的方法。

最新版本的规范是JSR 222:Java XML绑定(JAXB)2.0。请参阅http://jcp.org/en/jsr/detail?id=222。

EclipseLink JAXB实现是EclipseLink MOXy组件的一部分,它扩展了EclipseLink JAXB以支持JavaScript对象表示法(JSON)文档。EclipseLink在读取和写入JSON时支持所有对象/XML选项。MOXy还包括对旧的本机EclipseLink对象/XML API的支持。

除了上述标准规范的实现外,EclipseLink还包括以下内容:

3. EclipseLink数据库Web服务(DBWS)

DBWS是一种开发工具和运行时,用于通过Web服务提供符合Jakarta EE标准、客户端中立的对关系数据库构件的访问。开发工具DBWS Builder是一个命令行实用程序,它生成必要的部署构件。(DBWS Builder已集成到Eclipse Dali Java持久性工具集和Oracle JDeveloper中。)运行时提供程序获取服务描述符(以及相关的部署构件),并将其实现为JAX-WS 2.0 Web服务。运行时使用EclipseLink在数据库和Web服务客户端使用的XML SOAP消息之间进行桥接。

4. EclipseLink企业信息服务(EIS)

EIS是通过Java连接器体系结构(JCA)资源适配器启用对数据存储的使用的工具。使用XML元数据,配置和映射交互及其交换的数据到一个领域模型中。交互数据可以从Common Client接口(CCI)或使用XML模式进行映射。这种用法适用于非关系型数据存储,其中不提供JDBC或SQL访问。

EclipseLink可与各种Java企业版(Jakarta EE)和Java应用程序架构一起使用。使用EclipseLink设计、实现、部署和优化高级的对象持久化和对象转换层,支持各种数据源和格式,包括关系数据库、非关系(NoSQL)数据库、XML、JSON和Web服务。

EclipseLink支持在Jakarta EE、Java SE和包括与各种应用服务器的集成的Web容器中进行Java持久性,包括:

  • Oracle WebLogic Server
  • Oracle Glassfish Server
  • JBoss Web Server
  • IBM WebSphere应用服务器
  • SAP NetWeaver
  • Oracle Containers for Jakarta EE (OC4J)
  • 其他各种Web容器,如Apache Tomcat、Eclipse Gemini、IBM WebSphere CE和SpringSource Server

EclipseLink允许您快速捕获和定义对象与数据源以及对象与数据表示的映射,采用灵活、高效的元数据格式。

运行时允许您的应用程序利用这种映射元数据,通过提供深度支持数据访问、查询、事务(具有和不具有外部事务控制器的事务)和缓存的简单会话外观。

有关EclipseLink的更多信息,请参阅“关键特性”。

什么是对象持久性不匹配?

在创建企业Java应用程序时,Java到数据源的集成是一个被广泛低估的问题。这个复杂的问题涉及不仅仅是从数据源读取和写入。数据源元素包括表、行、列以及主键和外键。Java和Jakarta EE编程语言包括实体类(普通Java类)、业务规则、复杂关系和继承。在非关系数据源中,您必须将Java实体与XML元素和模式进行匹配。

成功的解决方案需要桥接这些不同的技术,并解决对象持久性不匹配的问题,这是一个具有挑战性和资源密集型的问题。要解

决这个问题,您必须解决Jakarta EE和数据源元素之间的以下问题:

  • 基本上是不同的技术
  • 不同的技能集
  • 每种技术都有不同的人员和所有权
  • 不同的建模和设计原则

作为应用程序开发者,您需要一个产品,能够让您将Java应用程序与任何数据源集成,而不会影响应用程序设计或数据完整性。此外,作为Java开发者,您需要能够使用关系数据库或非关系数据源作为存储库存储(即持久化)和检索业务域对象的能力。

EclipseLink解决方案

EclipseLink解决了Java对象和数据源之间的差异。它包含一个持久化框架,允许您构建结合对象技术最佳方面和特定数据源的应用程序。

您可以执行以下操作:

  • 将Java对象持久化到几乎任何关系数据库
  • 在Java对象与XML和JSON文档之间执行内存转换
  • 将任何对象模型映射到任何关系或非关系模式
  • 即使您不熟悉SQL或JDBC,也可以成功使用EclipseLink,因为EclipseLink提供了数据源的清晰、面向对象的视图

关键特性

提供了一系列广泛的功能,您可以利用这些功能快速构建高性能、可扩展和可维护的企业应用程序。

以下是一些主要特性:

  1. 非侵入性、灵活、基于元数据的架构

  2. 先进的映射支持和灵活性:关系型、对象关系型数据类型和XML

  3. 针对高度可扩展的性能和并发进行优化,具有广泛的性能调整选项

  4. 全面的对象缓存支持,包括一些应用服务器的集群集成(如Oracle Fusion Middleware Server)

  5. 广泛的查询功能,包括:Java持久性查询语言(JPQL)、本机SQL和EclipseLink表达式框架

  6. 即时读取

  7. 对象级事务支持,并与流行的应用服务器和数据库集成

  8. 乐观和悲观锁定选项以及锁定策略

有关更多信息和下载,请访问EclipseLink主页:

http://www.eclispe.org/eclipselink/

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/648978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—29. 两数相除【中等】

2023每日刷题(九十四) Leetcode—29. 两数相除 叛逆期实现代码 class Solution { public:int divide(int dividend, int divisor) {if(dividend INT_MIN && divisor -1) {return INT_MAX;} return dividend / divisor;} };运行结果 倍增算法…

java多线程测试websocket demo(使用文件流)

这个demo主要是利用Java多线程来测试WebSocket通信。首先,创建一个WebSocket服务器和客户端,然后使用多线程来模拟多个客户端同时连接服务器进行通信。通过多线程测试,可以验证WebSocket通信的并发性能和稳定性。同时,可以通过多线…

第14章_数据结构与集合源码(一维数组,链表,栈,队列,树与二叉树,List接口分析,Map接口分析,Set接口分析,HashMap的相关问题)

文章目录 第14章_数据结构与集合源码本章专题与脉络1. 数据结构剖析1.1 研究对象一:数据间逻辑关系1.2 研究对象二:数据的存储结构(或物理结构)1.3 研究对象三:运算结构1.4 小结 2. 一维数组2.1 数组的特点2.2 自定义数…

内存屏障,写屏障和读屏障

目录 jmm: 写屏障和读屏障 jmm: Java 内存模型(Java Memory Model,简称 JMM)是一种规定了多线程环境中共享变量的访问规则的模型。它确保了在不同线程之间的可见性、有序性和原子性。以下是关于 Java 内存模型的一些…

HTTP简单的接收和发送

注释 简单的http通讯信息,可以适应简单的场景 void Start(){StartCoroutine(GetRequest("https://jsonplaceholder.typicode.com/posts/1"));StartCoroutine(PostRequest("https://jsonplaceholder.typicode.com","hahah"));}/// &…

【基础算法练习】前缀和与差分模板

文章目录 前缀和算法思想差分算法思想C 版本的前缀和模板一维前缀和二维前缀和 C 版本的差分模板一维差分二维差分 前缀和算法思想 用 O(N) 的复杂度构建前缀和数组,通过这种方式达成 O(1) 的时间来得到区间和,说是一种算法,其实可以说是一种…

何恺明 ResNet 引用量正式破20万!!!

注: 本文转自微信公众号 BravoAI (专注AI资讯和技术分享), 原文网址: 何恺明 ResNet 引用量正式破20万!!!, 扫码关注公众号 谷歌学术显示, 截止到 2024年1月26日, 何凯明 ResNet 一文引用量正式突破 20W!!! 更为惊人的是, 从论文发表到今天, 不过7年!!!‍‍‍‍‍‍‍‍‍‍‍‍…

springboot347基于web的铁路订票管理系统

获取源码——》公主号:计算机专业毕设大全

经典框架解读 | 论文+代码 | 3D Detection | OpenPCDet | PointRCNN

论文标题:PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud 作者单位:The Chinese University of Hong Kong 代码:open-mmlab/OpenPCDet 论文:https://arxiv.org/pdf/1812.0424 第一次使用点云数据处理3D目标检测问题。 作者的观点: 1. 以前的…

预处理详解1❤

一:预定义符号 C语言中设置了一些预定义符号,它们可以直接使用,同时预定义符号是在预处理期间处理的。 以下就是相关的预处理符号的作用。 二:#define定义常量 首先基本的语法是 #define name stuff 相对比较简单&#xff…

Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪

0 开发需求 1、硬件:Ultraleap 手部追踪相机(Ultraleap 3Di) 2、软件:在计算机上安装Ultraleap Gemini (V5.2) 手部跟踪软件。 3、版本:Unity 2021 LTS 或更高版本 4、Unity XR插件管理:可从软件包管理器窗…

Bagging方法的基本思想

Bagging方法的基本思想实现 在Bagging集成当中,我们并行建立多个弱评估器(通常是决策树,也可以是其他非线性算法),并综合多个弱评估器的结果进行输出。当集成算法目标是回归任务时,集成算法的输出结果是弱…

乖乖,咱不用BeanUtil.copy了,咱试试这款神级工具(超详细)

引言 在现代Java应用程序开发中,处理对象之间的映射是一个常见而且必不可少的任务。随着项目规模的增长,手动编写繁琐的映射代码不仅耗时且容易出错,因此开发者们一直在寻找更高效的解决方案。比如基于Dozer封装的或者Spring自带的BeanUtil.…

AI Infra论文阅读之通过打表得到训练大模型的最佳并行配置

目录 0x0. 前言0x1. 摘要0x2. 介绍0x3. 背景0x4. 实验设置0x5. 高效的LLM训练分析0x5.1 Fused Kernels 和 Flash Attention0x5.1.1 Attention0x5.1.2 RMSNorm Kernel 0x5.2 Activation Checkpointing0x5.3 Micro-Batch 大小0x5.4 Tensor Parallelism和Pipline Parallelism0x5.5…

幻兽帕鲁服务器一键搭建脚本

前言 幻兽帕鲁刚上线就百万在线人数。官方服务器的又经常不稳定。所以这里给大家带来最快捷的搭建教程。废话不多说直接开始。 服务器配置要求 这里推荐腾讯云的轻量云服务器 测试环境: CPU : 2核 内存:4GB 系统:Debian 12 64…

二叉树的先序,中序,后序遍历

二分搜索树&#xff1a; 不了解的可以看这&#xff1a; 二分搜索树(Java&#xff09;-CSDN博客 中序遍历&#xff1a; public List<Integer> inorderTraversal(TreeNode root) {List<Integer>listnew ArrayList<>();midPai(root,list);return list;}publi…

leetcode:二叉树的中序遍历(外加先序,后序遍历)

题外&#xff1a;另外三种遍历可以看这&#xff1a; 层序遍历&#xff1a; Leetcode:二分搜索树层次遍历-CSDN博客 先序遍历&#xff1a; 二叉树的先序&#xff0c;中序&#xff0c;后序遍历-CSDN博客 后序遍历&#xff1a; 二叉树的先序&#xff0c;中序&#xff0c;后序…

鸿蒙开发(Harmonyos兼容与Harmonyos适配)

布局的实现 Layout_ability_main.xml布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <DirectionalLayoutxmlns:ohos"http://schemas.huawei.com/res/ohos"ohos:height"match_parent"ohos:width"match_pare…

测试人员为什么要编写测试用例?好的测试用例应该具备那些特点?

设计测试用例可以说是测试人员的一项最基本技能 。很多时候当我们接到设计测试用例的任务时 &#xff0c;往往都是想的该如何更快的完成这项任务 &#xff1f;而很少去想为什么要完成这项任务? 对于测试用例也是如此&#xff0c;为什么要设计测试用例呢(目的)&#xff1f;其实…

Jellyfin影音服务本地部署并结合内网穿透实现公网访问本地资源

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…