我正在编写一个支持多个用户的Web应用程序。每个用户都有自己的数据库-使用H2。所有数据库架构都是相同的。
我希望将Spring + Hibernate用于此应用程序。
因此,我坚持如何将用户的数据库与该用户相关联-
也许将其与HTTPSession关联,并扩展spring的AbstractRoutingDataSource?但这不会影响Hibernate的缓存吗?另一种方法是为每个数据源都配备一个SessionFactory,即使每个数据源的架构都相同…所以我认为这是浪费。
无论如何,选择数据源都必须是动态的-不能在上下文文件中对其进行预配置,因为每个新用户都将创建自己的数据库。有没有现有的框架/解决方案?
我对Hibernate Shards不太了解,也许行得通吗?
我 可能 错了(严格)SessionFactory
每个数据库必须有一个数据库(如某些资源所建议的那样):
动态数据源路由
我将花一些时间明天重新阅读所有内容(坦白地说,我并没有获得所有详细信息)并完全理解这种设置的含义(尽管似乎很明显,它将破坏二级缓存) 。我稍后再讲。
我正在编写一个支持多个用户的Web应用程序。每个用户都有自己的数据库-使用H2。所有数据库架构都是相同的。
我不知道这将如何扩展…您有多少用户?您如何运行H2,采用哪种模式?
因此,我坚持如何将用户的数据库与该用户相关联-
也许将其与HTTPSession关联,并扩展spring的AbstractRoutingDataSource?
您必须构建一个SessionFactory
每个用户,并将其与登录的用户相关联(在中Map
,使用登录名作为键),然后Session
从给定的中获取一个SessionFactory
。将生命周期绑定SessionFactory
到HTTP会话似乎是一个好主意(以节省一些内存),但是我不确定Spring在这里是否会很有帮助。我可能是错的,但是HibernateUtil
类的变化和完全编程的方法看起来更容易。我不确定您是否需要每个用户多个连接。
但这不会影响Hibernate的缓存吗?
什么缓存?
另一种方法是为每个数据源都配备一个SessionFactory,即使每个数据源的架构都相同…所以我认为这是浪费。
哦,这很浪费,但这就是您想要做的(每个用户一个数据库)。而且您别无选择(SessionFactory
每个数据库需要一个)。为什么实际上每个用户需要一个数据库?您确定这是一个明智的决定吗?正如已经暗示的那样,这意味着很多麻烦,无法很好地扩展,增加了复杂性等。为什么不使用单个数据库并将数据与用户相关联呢?
无论如何,选择数据源都必须是动态的-不能在上下文文件中对其进行预配置,因为每个新用户都将创建自己的数据库。有没有现有的框架/解决方案?
据我所知。这也是为什么我认为您必须以编程方式执行所有操作的原因。
我对Hibernate Shards不太了解,也许行得通吗?
鉴于您的应用程序的动态需求,我看不出它有什么帮助。
问题内容: 我需要创建一个可以管理多个数据源的服务。当首次运行应用程序时,这些数据源不一定存在,实际上,端点将创建新数据库,我希望能够切换到它们并创建数据。 例如,假设我有3个数据库,A,B和C,然后启动应用程序,使用创建D的端点,然后再使用D。 那可能吗? 我知道如何切换到其他数据源(如果存在),但是现在看不到任何解决方案可以使我的请求成为可能。你有什么主意吗? 谢谢 问题答案: 为了使用Spr
我对spring boot很陌生,我想为我的项目创建一个多数据源。这是我现在的案子。我有两个多数据库实体包。比方说 因此,目前我有两个实体类 userh2.java 我希望实现这样的配置:如果我从UserMySql创建user,它将保存到MySql数据库;如果我从Userh2创建user,它将保存到H2数据库。所以,我也有两个DBConfig,假设MySqlDbConfig和h2dbconfig。
说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务。我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解决方案,还有的是利用aop动态切换,感觉有点小复杂,其实我只是想找一个简单的多数据支持而已,折腾了两个小时整理出来,供大家参考。 废话不多说直接上代码吧 配置文件 pom包就不贴了比较简单该依赖的就依
我正在使用Spring2.x、Spring Data REST、Hibernate5.x、MySQL创建一个服务器REST应用程序。 我按照以下准则配置了多租户:https://dzone.com/articles/spring-boot-hibernate-multitenancy-implementation,唯一的区别是我使用了每个租户一个数据库。 我有一个来创建到DB的连接,还有一个来获取
问题内容: 我对Spring Boot还是很陌生,我想为我的项目创建一个多数据源。这是我目前的情况。我有两个用于多个数据库的实体包。比方说 所以,目前我有两个实体类 UserMySql.java 我想实现一个配置,如果我从UserMySql创建用户,它将被保存到MySql数据库,如果我从Userh2创建用户,它将被保存到H2数据库。所以,我也有两个DBConfig,比如说MySqlDbConfig
我有一个使用1.5.1版本spring boot的应用程序的问题。 启动程序时出现以下错误: 我尝试使用@primary,但当我需要使用其他数据源时,它不起作用。 谢谢你