多用户数据源 - Spring + Hibernate

2024-01-31

我正在编写一个支持多个用户的网络应用程序。每个用户都有自己的数据库——使用H2。所有数据库模式都是相同的。

我希望在这个应用程序中使用 Spring + Hibernate。

所以我被困在如何将用户的数据库与该用户关联起来——也许在HTTPSession中关联它,并扩展spring的AbstractRoutingDataSource?但这不会影响 Hibernate 的缓存吗?另一种方法是为每个数据源提供一个 SessionFactory,即使每个数据源的架构都是相同的......所以我认为这是一种浪费。

无论如何,选择数据源需要是动态的 - 它们不能在上下文文件中预先配置,因为每个新用户都会创建自己的数据库。有现成的框架/解决方案吗?

我对 Hibernate Shards 不太了解,也许这有用?


I might关于(严格)需要拥有一个的说法是错误的SessionFactory根据一些资源的建议,每个数据库:

动态数据源路由 http://blog.springsource.com/2007/01/23/dynamic-datasource-routing/

明天我会花一些时间重新阅读所有内容(说实话,我没有得到所有细节)并完全理解这种设置的含义(尽管看起来很明显它会破坏二级缓存) 。我稍后会回来讨论这个问题。


我正在编写一个支持多个用户的网络应用程序。每个用户都有自己的数据库——使用H2。所有数据库模式都是相同的。

我想知道这将如何扩展......您有多少用户?你如何运行H2,什么模式?

所以我被困在如何将用户的数据库与该用户关联起来——也许在HTTPSession中关联它,并扩展spring的AbstractRoutingDataSource?

你必须建立一个SessionFactory每个用户并将其关联到登录的用户(在Map,使用登录作为密钥),然后获取Session从给定的SessionFactory。绑定生命周期SessionFactory到 HTTP 会话似乎是一个好主意(节省一些内存),但我不确定 Spring 在这里会很有帮助。我可能是错的,但有一个变体HibernateUtil类和完全编程的方法看起来更容易。顺便说一句,我不确定每个用户是否需要多个连接。

但这不会影响 Hibernate 的缓存吗?

什么缓存?

另一种方法是为每个数据源提供一个 SessionFactory,即使每个数据源的架构都是相同的......所以我认为这是一种浪费。

哦,这是一种浪费,但这就是您想要做的(每个用户一个数据库)。而你别无选择(你需要一个SessionFactory每个数据库)。为什么实际上每个用户需要一个数据库?你确定这是一个明智的决定吗?正如已经暗示的那样,这意味着很多麻烦,无法很好地扩展,增加了复杂性等等。为什么不使用单个数据库并将数据与用户相关联呢?

无论如何,选择数据源需要是动态的 - 它们不能在上下文文件中预先配置,因为每个新用户都会创建自己的数据库。有现成的框架/解决方案吗?

据我所知。这也是为什么我认为你必须以编程方式完成所有事情。

我对 Hibernate Shards 不太了解,也许这有用?

考虑到您的应用程序的动态需求,我不认为它有什么帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多用户数据源 - Spring + Hibernate 的相关文章

  • Spring MVC 和 Struts MVC 之间的区别 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Spring MVC 和 Struts MVC 之间的主要区别是什么 Spring MVC 和 Struts 之间的主要区别是 Spr
  • Netbeans 雷达插件配置

    我使用的是 Netbeans 8 0 1 在提交到 SVN 之前 我需要从 IDE 运行并检查 SonarQube 分析 我已经安装了 Netbeans Radar 插件 用于启动本地分析并检查结果 这个插件有一个名为 Get Issues
  • 获取文本文件中行的字节偏移量?

    我有一个文本文件 例如 one two three four five 我需要获取文件中每一行的偏移量 我如何在 Java 中做到这一点 我搜索了一些 I O 库 如 BufferedReader 和 RandomAccessFile 但我
  • 如何增加使用 SAX 解析 XML 文件的entityExpansionLimit

    我正在尝试使用 Java 中的 SAX 解析器解析一个 1 23 GB 的 XML 文件 我使用的是 Mac 操作系统和 JDK 1 7 0 51 不幸的是 我收到以下错误 The pasrser has encountered more
  • 将 Swing 集成到简单的文本冒险游戏中

    我对 Java 中的一些中级概念相当陌生 最近 我制作了一款名为 DazzleQuest 的文本冒险游戏 它完全在开发者控制台 终端中运行 它涉及到我的朋友作为角色 所以我想向他们展示它 并通过将命令行的功能和控制台的输出转移到一个简单的
  • Java TCP Echo 服务器 - 广播

    我有一个简单的回显服务器 我希望当连接的用户向服务器键入任何内容时 所有其他客户端和该客户端都会收到消息 MOD 它现在不会发送给所有客户端 但它应该发送 而且我只是不知道我的代码出了什么问题 所以现在它只会将消息 MOD 发送给发送消息的
  • 控制启动时的竞争条件

    我有一些代码想要执行一些一次性初始化 但这段代码没有明确的生命周期 因此在初始化完成之前 我的逻辑可能会被多个线程调用 所以 我想基本上确保我的逻辑代码 等待 直到初始化完成 这是我的第一次剪辑 public class MyClass p
  • 无法从 PDFA1-a 格式文档中提取图像

    我正在使用以下代码从 PDFA1 a 格式的 pdf 中提取图像 但我无法获取图像 List
  • 具有多个字符串的列表视图

    我正在尝试创建一个包含多个字符串的列表视图 现在我有一个可以实现的功能 while i lt 10 GETS DATA FROM WEBPAGE ETC a DATAFROMWEBPAGE1 b DATAFROMWEBPAGE2 c DAT
  • 为什么在大多数开源java项目中局部变量没有被声明为final?

    如果我查看 OpenJDK Hibernate 或 Apache 中的 java 源代码 我还没有看到任何声明为 Final 的局部变量 这表明一些最广泛使用的 java 软件库的开发人员 不要相信final关键字可以提高可读性 不相信它会
  • 如何在 HashiCorp Vault 中安全地存储 Spring Boot 应用程序的机密?

    我已阅读以下教程 保险库配置 https spring io guides gs vault config 好的 我们安装了 Vault 服务器并放置了 2 对秘密属性 vault kv put secret gs vault config
  • 如何在 WebSphere Liberty Batch 中配置事务超时?

    的作用是什么javax transaction global timeout 我是否需要实施检查点 超时 中的方法检查点算法 服务器配置级别有什么东西吗 它如何与应用程序级别的设置进行交互 2016年12月2日编辑 重新设计并解释了为应用程
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • CompletableFuture SupplyAsync

    我刚刚开始探索 Java 8 的一些并发特性 让我有点困惑的一件事是这两个静态方法 CompletableFuture
  • 谷歌的Json解析Gson库:JsonElement和JsonObject有什么区别?

    public abstract class JsonElement extends Object 表示 Json 元素的类 它可以是 JsonObject JsonArray JsonPrimitive 或 JsonNull public
  • 在 x64 系统上使用 skype-java-api

    我正在使用 skype java api 在 Java 中使用 Skype 我需要的唯一功能是点击即可拨打电话号码 它在 Windows XP x86 上运行良好 但我刚刚在 Windows 7 x64 上测试它 但失败了 错误是 线程 T
  • 枚举

    我试图拥有一组扩展通用接口的枚举 例如 interface Fooable void someCommonMethod enum E1 implements Fooable some enumuerations and a definiti
  • 如何在 Windows 上使用 Java Hotspot JVM 禁用小型转储 (mdmp) 文件生成

    目前 我有一个已部署的可执行 jar 文件 该文件在崩溃时会创建大型 7 Gb 小型转储文件 我想要一个导致崩溃原因的文本表示 而不是 JVM 状态的二进制文件 我尝试使用中找到的信息这个 CodeRanch 帖子 http www cod
  • 如何将 printStackTrace() 中的异常写入 Java 中的文本文件?

    我需要用 Java 捕获文本文件中的异常 例如 try File f new File catch FileNotFoundException f f printStackTrace instead of printing into con
  • Java Media API:java media api 下载

    我在哪里可以找到javax media jar 文件 在sun站点它下载一个安装程序 有没有可用的java媒体jar 没有 javax media 具体是 jar 文件 该包位于 jmf jar 文件中 您需要运行安装程序并取出 jar 或

随机推荐

  • VBA 动态范围

    我想知道是否有人可以帮助我 我将下面的代码放在一起 在我的工作簿中创建一个新工作表并应用动态命名范围和页面格式 Sub AllDataNamedRanges Dim rLOB As Range Dim rStaffName As Range
  • keras:如何保存历史对象的训练历史属性

    在 Keras 中 我们可以返回以下输出model fit历史记录如下 history model fit X train y train batch size batch size nb epoch nb epoch validation
  • C++20 前后 std::atomic 的初始化

    考虑以下两行代码 std atomic flag a Since C 20 std atomic flag a ATOMIC FLAG INIT Until C 20 在C 20中 第一行初始化a到清晰的状态 但如果我在 C 17 中使用它
  • 已弃用 - Laravel:如何使用 Carbon 在视图中本地化日期[重复]

    这个问题在这里已经有答案了 我正在尝试本地化Carbon不同语言的视图中的日期到目前为止还没有成功 我从模型中检索日期并将其发送到视图 Route get tables setup function now Date now Europe
  • Phonegap 3.0 自定义插件

    几个月前 我用phonegap 2 7为一个应用程序编写了一个插件 它运行得很好 该插件基本上打开用户电话簿并将用户选择的联系人的详细信息返回到我的应用程序 我最近升级到 Phonegap 3 0 我正在尝试将我的插件转换为 3 0 但是我
  • 如何将 NSData 值转换为 UIImage [重复]

    这个问题在这里已经有答案了 可能的重复 NSData 到 UIImage https stackoverflow com questions 2240765 nsdata to uiimage 如何将 NSData 值转换为 UIImage
  • Python 中二维矩阵的单元格分配,无需 numpy

    下面是我的脚本 它基本上创建了一个 12x8 的零矩阵 其中填充了 0 然后我想将其一一填充 假设第 2 列第 0 行需要为 5 我该怎么做 下面的示例显示了我是如何做到的以及错误的 根据我的需要 输出 list MatrixRow lis
  • 为什么要禁用垃圾收集器?

    Pythons gc disable http docs python org 3 3 library gc html gc disable禁用自动垃圾收集 据我了解 这会产生相当多的副作用 为什么有人想要禁用自动垃圾收集 如果没有它 如何
  • Swift 4 中的访问控制

    升级到Swift4 from Swift3 我遇到了一些相关问题access control 这是示例代码 其中有Swift3 过去工作正常 open class MyClass private let value Int static v
  • Xcode 机器人在成功/失败时不发送电子邮件

    我设置了 Xcode Bots 它运行成功 但是 尽管设置了电子邮件地址以在构建成功或失败时收到通知 但我没有收到任何电子邮件 是否有任何额外的 SMTP 设置需要隐藏在某处 您可能需要配置 Mac OSX 服务器来发送电子邮件 本地服务器
  • 如何在 Eclipse 中根据变量设置 Ant 属性?

    我有一个常见问题 可能有无数种方法可以解决它 我正在为这种典型场景寻找一种优雅 简单的解决方案 我在 Eclipse 中有一个带有 Ant 构建文件 build xml 的项目 该构建文件使用属性文件 build properties 在该
  • NSRegularExpression 用于剥离 HTML 标签

    我正在开发一个电子书阅读器应用程序 我有整本电子书的 ePUB 文件 其中电子书的每个主题都是一个 html 文件 我想在应用程序中实现搜索功能 我正在使用 NSRegularExpression 类进行搜索 请考虑以下 html 代码
  • 为什么 C#7 语法中的 TryParse(清空参数)在编译时会发出警告?

    在 C 7 中 你可以这样做 if int TryParse 123 out int result Console WriteLine Parsed result 或者 如果您不使用结果而只想检查解析是否成功 discard https l
  • 用于复制的 EBS 卷的快照

    我在 EBS 卷上设置了一个带有 MySQL 的 EC2 实例 并设置了另一个充当复制从属实例 复制设置很好 我的问题是关于拍摄这些卷的快照 我注意到快照过程需要锁定表 这可能会给用户带来不便 因此 我的想法是保留主实例并拍摄作为从实例的快
  • 从队列中获取最后 n 个项目

    我看到的一切都是关于列表的 但这是关于events queue queue 这是一个包含我想要提取的对象的队列 但是我如何从该队列中获取最后 N 个元素 根据定义 你不能 你可以做的是使用循环或理解get the first 你不能get从
  • 为什么body.scrollHeight自动增加而不减少

    我的 iframe body 有一个scrollHeight我认为是只读的属性 我不明白它是如何设置的 当我修改iframe body innerHTML和一些largerHTML 我注意到iframe body scrollHeight
  • 如何用随机字典值填充 pandas 数据框列

    我是 Pandas 新手 我想使用随机文本数据 我正在尝试向 DataFrame df 添加 2 个新列 每个列都由从字典中随机选择的键 newcol1 值 newcol2 填充 countries Africa Ghana Europe
  • TinyMCE中通过execCommand(insertContent)插入元素的参考

    我需要一个我通过 TinyMCE 编辑器插入的元素的参考 ed execCommand mceInsertContent false span class marker my node content span 或者 是否有任何解决方法可以
  • CollapsingToolbarLayout 以编程方式扩展动画持续时间

    我在 Android 的应用程序中使用 CollapsingToolbarLayout 我的应用程序的最低要求 API 是 9 我需要当用户单击折叠的工具栏时展开折叠的工具栏 就像在最新的 Gmail 日历应用程序中一样 所以我设置了一个
  • 多用户数据源 - Spring + Hibernate

    我正在编写一个支持多个用户的网络应用程序 每个用户都有自己的数据库 使用H2 所有数据库模式都是相同的 我希望在这个应用程序中使用 Spring Hibernate 所以我被困在如何将用户的数据库与该用户关联起来 也许在HTTPSessio