EclipseLink实现多租户

文章目录

前言

EclipseLink 是 Eclipse 基金会管理下的开源持久层服务项目,为 Java 开发人员与各种数据服务(比如:数据库、web services、对象XML映射(OXM)、企业信息系统(EIS)等)交互提供了一个可扩展框架.


叙述

EclipseLink 前身是 Oracle TopLink, 2007年 Oracle 将后者绝大部分捐献给了 Eclipse 基金会,次年 EclipseLink 被 Sun 挑选成为 JPA 2.0 的参考实现。

概述

EclipseLink 目前支持的持久层标准中包括:

  • Java Persistence API (JPA)
  • Java Architecture for XML Binding (JAXB)
  • Java Connector Architecture (JCA)
  • Service Data Objects (SDO)

在完整实现 JPA 标准之外,针对 SaaS 环境,在多租户的隔离方面 EclipseLink 提供了很好的支持以及灵活地解决方案。
应用程序隔离

  • 隔离的容器/应用服务器
  • 共享容器/应用服务器的应用程序隔离
  • 同一应用程序内的共享缓存但隔离的 entity manager factory
  • 共享的 entity manager factory 但每隔离的 entity manager
    数据隔离
  • 隔离的数据库
  • 隔离的Schema/表空间
  • 隔离的表
  • 共享表但隔离的行
  • 查询过滤
  • Oracle Virtual Private Database (VPD)

##实现方案
对于多租户数据源隔离主要有以下方案:
(1)Single-Table Multi-tenancy,依靠租户区分列(tenant discriminator columns)来隔离表的行,实现多租户共享表。
(2)Table-Per-Tenant Multi-tenancy,依靠表的租户区分(table tenant
discriminator)来隔离表,实现一租户一个表,大体类似于上文的共享数据库独立Schema模式。
(3)Virtual Private Database(VPD ) Multi-tenancy,依靠 Oracle VPD
自身的安全访问策略(基于动态SQL where子句特性),实现多租户共享表。


关于具体的EclipseLink实现多租户请看小编的后续博客。

小结

技术点的研究和应用不是一蹴而就的,要有耐性。

感谢您的阅读~~

EclipseLink是一种JPA实现框架,它提供了很多JPA相关的工具和插件,可以方便地生成JPA实体类。下面是使用EclipseLink生成JPA实体类的步骤: 1. 在Eclipse中创建一个JPA项目。 2. 在项目中创建JPA实体类,可以使用@Entity、@Table、@Id、@Column等注解进行标注: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private Integer age; // Getter/Setter方法 } ``` 3. 在项目中创建JPA仓库接口,继承自JpaRepository: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { } ``` 4. 在项目中创建persistence.xml文件,配置JPA实现和数据源: ```xml <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0"> <persistence-unit name="myPersistenceUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>com.example.User</class> <properties> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mydatabase"/> <property name="javax.persistence.jdbc.user" value="username"/> <property name="javax.persistence.jdbc.password" value="password"/> </properties> </persistence-unit> </persistence> ``` 5. 在项目中运行,EclipseLink会根据实体类的定义自动创建数据表。 需要注意的是,EclipseLink默认使用JDBC作为数据源,如果您需要使用其他数据源(比如连接池),可以在persistence.xml中进行配置。另外,EclipseLink还提供了很多其他的JPA相关功能,比如查询方法的自动生成、分页查询等,具体使用方法可以参考EclipseLink的官方文档。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi-Sunshine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值