拓展阅读
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提供了数据源的清晰、面向对象的视图
关键特性
提供了一系列广泛的功能,您可以利用这些功能快速构建高性能、可扩展和可维护的企业应用程序。
以下是一些主要特性:
-
非侵入性、灵活、基于元数据的架构
-
先进的映射支持和灵活性:关系型、对象关系型数据类型和XML
-
针对高度可扩展的性能和并发进行优化,具有广泛的性能调整选项
-
全面的对象缓存支持,包括一些应用服务器的集群集成(如Oracle Fusion Middleware Server)
-
广泛的查询功能,包括:Java持久性查询语言(JPQL)、本机SQL和EclipseLink表达式框架
-
即时读取
-
对象级事务支持,并与流行的应用服务器和数据库集成
-
乐观和悲观锁定选项以及锁定策略
有关更多信息和下载,请访问EclipseLink主页:
http://www.eclispe.org/eclipselink/