hibernate和eclipselink的区别

冬眠

Hibernate是一个开源的对象/关系映射框架和查询服务。它将JDBC封装成一个轻量级对象,负责从Java类到数据库表以及从Java数据类型到SQL数据类型的映射。Hibenate在4.0版本开始支持多租户架构——针对不同租户使用独立数据库或独立Sechma,并计划在5.0版本支持共享数据表模式。

Hibernate 4.0中有三种多租户模式,通过hibernate.multiTenancy属性可以使用以下配置:

无:非多租户,这是默认值。

模式:每个租户一个模式。

数据库:一个租户有一个数据库。

鉴别器:租户共享数据表。计划在冬眠5年实施

EclipseLink

EclipseLink是由Eclipse Foundation管理的开源持久层服务项目,它为Java开发者提供了一个可扩展的框架,用于与各种数据服务(如数据库、web服务、对象XML映射(OXM)、企业信息系统(EIS)等)进行交互。).目前,支持的持久层标准包括:

Java持久性API (JPA)

XML绑定的Java架构(JAXB)

Java连接器架构(JCA)

服务数据对象(SDO)

EclipseLink以前被称为Oracle TopLink。2007年,Oracle将后者的大部分捐赠给Eclipse Foundation,次年EclipseLink被Sun选为JPA 2.0的参考实现。

注意:目前EclipseLink2.5完全支持2013发布的JPA2.1(JSR 338)。

除了JPA标准的完整实现,EclipseLink还为SaaS环境下的多租户隔离提供了良好的支持和灵活的解决方案。

应用隔离

隔离的容器/应用服务器

共享容器/应用服务器的应用隔离

在同一应用程序中共享缓存但隔离的实体管理器工厂。

共享实体管理器工厂,但每个独立的实体管理器

数据隔离

独立数据库

隔离的模式/表空间

隔离表

共享表但隔离行

查询过滤

Oracle虚拟专用数据库(VPD)

对于多租户数据源隔离,主要有以下几种方案

单表多租户,依靠租户鉴别器列隔离表的行,实现表的多租户共享。

表租户多租户,依靠表租户鉴别器隔离表,实现一个租户一个表,大致类似于上面的共享数据库的独立模式。

虚拟私有数据库(VPD)多租户依靠Oracle VPD自己的安全访问策略(基于动态SQL where子句)实现多租户共享表。

推荐看这篇文章:/java/j-lo-dataMultitenant/,不错。