繁体   English   中英

在Hibernate中需要在运行时将类映射到不同的数据库

[英]Need to map classes to different databases at runtime in Hibernate

我有MainDB数据库,并且在编译时, UserDB_1 ,..., UserDB_N数据库的数量未知。 MainDB在某些表中包含那些UserDB数据库的名称(可以在运行时创建新的UserDB )。

所有UserDB的表名和字段都完全相同。

在Hibernate中如何处理这种情况? (数据库结构无法更改)。

目前,我正计划创建未映射到任何内容的通用User类,而仅对所有查询使用本机SQL:

session.createSQLQuery("select * from " + db + ".user where id=1")
    .setResultTransformer(Transformers.aliasToBean(User.class));

有什么我可以做的更好的吗? 理想情况下,我希望具有UserDB表和关系的映射,并在所需的数据库上使用HQL。

在构建SessionFactory时,可以指定数据库(通过DataSource的连接字符串)。 当您要使用另一个数据库时,只需使用新的DataSource重建SessionFactory即可。

声明并注入不同的SessionFactory (每个数据库一个)。

在Hibernate博客上阅读此文章: http : //in.relation.to/Bloggers/MultitenancyInHibernate

史蒂夫说,最好使用ConnectionProvider而不是单独的SessionFactory。

切记禁用二级缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM