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/,不错。