簡體   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