[英]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.