EclipseLink:支持JPA、JAXB、JCA和SDO等多种持久化标准的ORM

 ,  , 

eclipselink

EclipseLink基于TopLink(由Oracle贡献),是一个开源的Eclipse持久层服务项目,该项目的目标是提供一个既全面又普遍的完整的持久层解决方案。它提供了一个可扩展的框架,允许Java开发者与各种数据服务进行交互,包括数据库、web服务、OXM、企业信息系统(EIS)。

主要功能

EclipseLink支持一些持久层的标准,包括:

  • Object-Relational(JPA)
  • NoSQL(NoSQL Databases,and EIS)
  • Java Connector Architecture(JCA)
  • MOXy:Object-XML(JAXB)&Object-JSON
  • DBWS:Database Web Services
  • Service Data Objects(SDO)

EclipseLink持久平台由多个组件构成,主要有EclipseLink-ORM、EclipseLink-OXM、EclipseLink-SDO、 EclipseLink-DAS、EclipseLink-DBWS、EclipseLink-XR、EclipseLink-EIS。

JPA

EclipseLink(详细介绍)提供一个完整的、兼容EJB3.0的JPA实现。它提供完全的兼容性为所有的强制特性、许多可选特性、部分额外的特性。额外的非强制性功能包括:object-level cache、distributed cache coordination、extensive performance tuning options、enhanced Oracle Database support、advanced mappings、optimistic and pessimistic locking options、extended annotations and query hints。EclipseLink对基于EJB3.0容器的部署提供支持,包括Web容器和其它的非EJB3.0的Java EE容器。

我们可以通过以下几个方面执行EclipseLink JPA的对象关系映射:使用元数据注解、使用XML、覆盖和合并XML、Defaulting Properties、配置实体、声明基本属性映射、映射关系、映射继承、使用嵌入对象。

使用元注解

可以使用注解来配置实体的持久行为。比如,指定Java类作为一个JPA实体,像下面这样使用@Entity注解:

 

可以在三个不同的级别上使用注解:类、方法、字段。 EclipseLink定义了一系列的专有注解,详细注解请参考org.eclipselink.annotations。

使用XML

我们可以使用XML映射元数据,结合元数据注解,或者可以用它覆盖掉元数据注解。下面的例子显示了一个典型的XML映射文件头:

 

映射文件的跟元素被称作实体映射,所有对象关系的XML元数据都包含在这个元素中。实体映射的子元素分为四个主要的范围和功能组:持久性单元默认值、映射文件默认值、查询和生成器、托管的类和映射。还有一个特殊的设置来决定注解是否被考虑进元数据的持久化单元。

EclipseLink提供一系列的持久化单元属性,可以在persistence.xml文件或者属性映射文件中设置。

覆盖与合并XML

你可以使用EclipseLink的本地元数据xml文件EclipseLink-ORM.XML来覆盖定义在JPA的配置文件orm.xml的映射,并提供给EclipseLink扩展的ORM特征。EclipseLink-ORM.xml文件定义了对象关系映射元数据,它是从现有的orm.xml文件构建,这使得它更直观、低配置、易覆盖。

EclipseLink-ORM.XML文件可以通过下面的文件或方法被引入一个持久化单元的元数据中:

图片3

例1:

  • META-INF/orm.xml – 定义映射b和c的实体A。
  • META-INF/eclipselink-orm.xml – 为c和d定影映射实体A。
  • Result – 实体A将会包含映射b(orm.xml)、映射c和d(eclipselink-orm.xml)。

例2:

  • META-INF/orm.xml – 定义映射b和c的实体A。
  • META-INF/some-other-mapping-file.xml – 定义映射a和b的实体B。
  • META-INF/eclipselink-orm.xml – 为c和d定义映射实体A,为映射b和c定义实体B。
  • Result
  •    实体A将会包含映射b(orm.xml)、映射c和d(eclipselink-orm.xml)。
  •     实体B将会包含映射a(some-other-mapping-file),映射b和c( eclipselink-orm.xml)。

例3:

  • META-INF/orm.xml -定义映射b和c的实体A。
  • META-INF/eclipse-orm.xml – 定义映射c和d的实体A。
  • META-INF/some-other-mapping-file.xml – 定义映射x的实体A。
  • Result – 实体A将会包含映射b(orm.xml)、映射c和d(eclipselink-orm.xml)、映射x(some-other-mapping-file)。

属性默认值

每一个注解都有一个默认值(参考JPA规范)。一个持久化工具定义的默认值适用于大多数应用程序。你只需要提供数值就可以覆盖掉默认值。因此,提供一个配置值不是必须的,而是例外。这被称为配置异常。

配置实体

你可以配置你的实体的身份,以及实体的锁相技术和序列生成。每一个实体都必须有一个持久的身份,这相当于一个数据库表的主键来存储实体的状态。你可以生成或者配置你的实体身份通过使用以下注解:

  • @Id
  • @IdClass
  • @EmbeddedId
  • @GeneratedValue
  • @TableGenerator
  • @SequenceGenerator

@Id注解的使用

 

@IdClass注解的使用

@EmbeddedId注解的使用

 

@SequenceGenerator注解的使用

 

关于EclipseLink的特性还有很多,更多具体内容请参考官网和开源代码。

开发资源

开源协议

EclipseLink采用Eclipse Public License v1.0 和 Eclipse Distribution License v1.0双协议开源发布。

官方网站:https://www.eclipse.org/eclipselink/
开源地址:https://github.com/eclipse/eclipselink.runtime

1 收藏

资源整理者简介:贺贺

生命本无意义,你给它什么意义,它就有什么意义。我爱程序员。 个人主页 · 贡献了5个资源


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer