我正在编写一个支持多用户的web应用程序。每个用户都有自己的数据库--使用H2。所有数据库模式都是相同的。
我希望在这个应用程序中使用Spring + Hibernate。
因此,我被困在如何将用户的数据库与该用户关联起来--也许是在HTTPSession中关联它,并扩展spring的AbstractRoutingDataSource?但是这不会影响Hibernate的缓存吗?另一种方法是对每个数据源使用一个SessionFactory,即使每个数据源的模式都是相同的……所以我认为这是一种浪费。
无论如何,选择数据源需要是动态的-它们不能在上下文文件中预先配置,因为每个新用户都会创建自己的数据库。有没有现有的框架/解决方案?
我对Hibernate分片了解不多,也许它可以工作?
发布于 2010-10-06 17:09:10
感谢2个人(Pascal和org.life.java)的帮助!
这是可能的,但有一些问题:例如hibernate二级缓存/查询缓存。
Pascal提供的这个链接是一个非常好的资源:
http://www.jroller.com/kenwdelong/entry/horizontal_database_partitioning_with_spring。
我给每个用户提供一个单独的数据库的主要动机是因为数据可能会快速增长,因此需要水平分区。
https://stackoverflow.com/questions/3853498
复制相似问题