hibernate实现多租户[通俗易懂]

hibernate实现多租户[通俗易懂]hibernate实现多租户

大家好,又见面了,我是你们的朋友全栈君。

在Hibernate4.0中多租户有三种模式:

1.NONE:默认值,非多租户。

2.SCHEMA:一个租户一个Schema

3.DATABASE:一个租户一个database

4.DISCRIMINATOR:租户共享数据表,在Hibernate5中实现

在我们的项目中现在用到的是“一个租户一个Schema”的模式。

实现demo:

1.数据库

在数据库中新建两个Schema,名字分别为hotel_1和hotel_2

在hotel_1和hotel_2中新建一张guest表,如图:

hibernate实现多租户[通俗易懂]

一.实体类

Login实体:

package hotel.model;

public class Login {
	private String username;
	private String password;
	private static String tenantId;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public static String getTenantId() {
		return tenantId;
	}
	public static void setTenantId(String tenantId) {
		Login.tenantId = tenantId;
	}
	
	
}

二.配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 
          
<hibernate-configuration>

    <session-factory>
        <!-- 这里的test是物理库的名字 -->
        <property name="connection.url">jdbc:mysql:///test?useUnicode=true&characterEncoding=utf8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
        <property name="hibernate.connection.autocommit">false</property>
        <property name="hibernate.cache.use_second_level_cache">false</property>
        <property name="show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto" >create</property>
        <property name="hibernate.multiTenancy">SCHEMA</property>
        <!-- hibernate.tenant_identifier_resolver属性规定了一个合约,以使 Hibernate 能够解析出应用当前的 tenantId,-->
        <!-- 该类必须实现 CurrentTenantIdentifierResolver 接口,通常我们可以从登录信息中获得 tenatId。 -->
        <property name="hibernate.tenant_identifier_resolver">hotel.dao.hibernate.TenantIdResolver</property>

        <!-- 指定了 ConnectionProvider,即 Hibernate 需要知道如何以租户特有的方式获取数据连接 -->
        <property name="hibernate.multi_tenant_connection_provider">hotel.dao.hibernate.SchemaBasedMultiTenantConnectionProvider</property>

        <mapping class="hotel.model.Guest" />

    </session-factory>
</hibernate-configuration> 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105687.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ldap 统一认证 java_如何在你的系统里集成LDAP统一认证「建议收藏」

    一、为什么需要统一认证日常办公经常会有多套系统,如果各个系统各自维护一套用户认证,用户需要记住多个用户名密码。系统各自管理用户认证的方式,不但会有重复建设的问题,用户体验也会差,经常会有用户忘记密码的情况。二、LDAP统一认证是什么LDAP是LightweightDirectoryAccessProtocol(轻量级目录访问协议)的缩写,它是基于X.500标准的轻量组播目录访问协议。目录…

    2022年4月17日
    70
  • java二维数组初始化导入案例_Java二维数组初始化的方法详解

    java二维数组初始化导入案例_Java二维数组初始化的方法详解对于一个新使用的工具,我们会进行初步的初始化工具,目的是为了加上一些使用的配置。在学过了一维数组后,那么二维数组是加了一层维度的一维数组。在初始化方面,二维数组有三种方法,相信很多人只是掌握了其中的一种。下面本篇就Java二维数组简单介绍,然后就三种初始化方法带来详解。1.二维数组说明数组是一个容器,用来存储数据的。现在数组中存储的不再是int,double..的类型了,而是存储的数组。数组中的元…

    2022年5月25日
    46
  • spring对JDBC的支持

    spring对JDBC的支持

    2021年8月2日
    49
  • 计算机定时关机命令,电脑定时关机怎么设置_电脑定时关机命令

    计算机定时关机命令,电脑定时关机怎么设置_电脑定时关机命令标签:电脑(142)命令(11)电脑系统WindowsXP第一种:电脑定时关机怎么设置的步骤是这样的:例如,要使电脑在23:00的时候定时自动关机,单击“开始”-“运行”命令,在打开的“运行”对话框中输入at23:00shutdown-s,单击”确定”按钮关闭“运行”对话框即可。这样,您就可以在23:00点时电脑就会弹出“系统关机”对话框,默认30秒钟倒计时并提示保存工作。(当你不想它运行…

    2022年5月14日
    35
  • pycharm-2021.3.3激活码破解方法

    pycharm-2021.3.3激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    1.3K
  • 数字游戏13524_数位计数器

    数字游戏13524_数位计数器由于科协里最近真的很流行数字游戏。某人又命名了一种取模数,这种数字必须满足各位数字之和 mod N 为 0。现在大家又要玩游戏了,指定一个整数闭区间 [a.b],问这个区间内有多少个取模数。输入格式输入包含多组测试数据,每组数据占一行。每组数据包含三个整数 a,b,N。输出格式对于每个测试数据输出一行结果,表示区间内各位数字和 mod N 为 0 的数的个数。数据范围1≤a,b≤231−1,1≤N<100输入样例:1 19 9输出样例:2#include<bits

    2022年8月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号