【问题标题】:spring + hibernate - mapping entities to different data sourcesspring + hibernate - 将实体映射到不同的数据源
【发布时间】:2012-03-10 15:05:32
【问题描述】:

我的应用目前在自己的数据库中处理其用户。 我正在创建一个 CAS 应用程序,它将集中管理我的应用程序和其他应用程序的用户。此 CAS 应用程序将使用自己的数据库,其他应用程序将可以访问它。 我对包括 CAS 在内的所有应用程序使用相同的休眠实体“用户”。

我的目标是能够配置应用在查找“用户”实体时是使用“本地”数据库还是“CAS”数据库。

此配置不必在运行时更改。它可以是 spring 上下文 xml 配置(或只是一组不同的导入)。

我不想使用额外的会话工厂。当我意识到我需要在 web.xml 中定义更多的 open-in-session-view 过滤器——每个工厂一个。

如何配置单个会话工厂以根据某些配置从不同的数据源加载此实体(可能还有其他相关的实体)?

【问题讨论】:

    标签: hibernate spring entity datasource


    【解决方案1】:

    看看这个关于动态数据源路由的blog post。它可以帮助你:-)

    【讨论】:

    • 已经看过这个并认为它对我没有帮助。在他们的示例中,他们根据某些配置从不同的数据库加载项目(或用户...)。除了用户之外,我还有更多数据,我不想将该数据的加载路由到不同的数据源/数据库。我只希望用户根据某些配置从不同的数据库加载。
    【解决方案2】:

    您是否查看过 Hibernate 4 中的多租户支持? http://relation.to/Bloggers/MultitenancyInHibernate

    【讨论】:

    • 刚才看了一下。第一个关于分区的例子将解决这个问题。这导致我查看休眠碎片,这反过来又导致我走入了死胡同。看起来休眠碎片有些死了。我在任何 maven repo 上都找不到该项目(尝试过 central 和 jboss)。我什至无法在 Jarvana 中找到它的课程。它只能从 hibernate.org 站点下载,但我不想弄乱 maven 本地 repo jar 安装...我会尝试看看他们的第二个建议 - hibernate 过滤器。
    • 顺便说一下,我正在使用hibernate 3.6.1-Final。
    • 多租户 != 分片。这是 Hibernate 4 中引入的一项新功能。因此,如果您无法升级,请忽略这一点。不过,这是当今在 Hibernate 中处理多个数据源的“正确”方式。
    • 我正在更新到 4.1.0.Final atm。会看看它是否破坏了我的项目中的任何东西。无论如何,我的问题不是真正的多租户问题。我没有多个租户需要从不同来源加载数据。我只需要从不同的数据库加载我的用户实体。我认为分片会起作用,因为我会将用户数据库配置为一个分片 - 当使用 cas 时,整个分片将是 cas db,当不使用它时,整个分片将是应用程序本地数据库。
    • 已完成迁移到 4.1.0。我查看了连接提供程序解决方案,但它与 Spring 的 AbstractRoutingDataSource 基本相同。我只需要为用户实体访问 CAS 数据库,而不是全部。它看起来像是回到 2 个会话工厂或使用普通的旧 jdbc+sql...
    猜你喜欢
    • 1970-01-01
    • 2018-06-28
    • 2014-03-06
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2016-07-05
    • 2021-12-11
    • 2013-04-08
    相关资源
    最近更新 更多