當前位置:編程學習大全網 - 行動軟體 - hibernate動態創建表

hibernate動態創建表

妳這種設計有問題啊。每註冊壹個會員創建壹個表,重新加載hbm,是不是還要刷新壹次sessionFactory?如果有人不停註冊,那妳的服務還跑不跑了?

妳計算貢獻值完全可以放在壹個表中通過1對多或者HQL來過濾。

如果非要分表做,那就遠離hbm,通過session.createSQLQuery()調用本地sql語句對數據庫直接進行操作。

=================

理解錯了,抱歉。這個可以結合妳的數據庫來看了。 我對pgsql比較熟, pgsql支持子表, 可以建立壹個父表,然後每個月建立壹個子表,查詢的時候直接查詢父表, pgsql會根據查詢條件裏的時間範圍自動決定是在所有子表中查還是在特定子表中查。select * from 父表是可以檢索到所有值的,這個機制在物理上又實現了數據水平切分和可管理性。

所以如果支持父-子表機制的數據庫裏,可以通過數據庫本身的特性來實現,hbm不需要改變,映射到父表即可。insert時候會自動寫入子表。如果子表不存在則寫入父表。

如果在不支持父-子機制的數據庫裏,查詢通過createSQLQuery來做,Hibernate支持將未映射的查詢結果Transform為特定的類型的對象。例如:

query.setResultTransformer(Transformers.aliasToBean(MyObject.class));

query.list();

insert通過時間字段計算出要寫入的數據表,通過insert來執行寫入。

總之,我給出的意見就是,支持子表特性的數據庫HBM來實現,不支持子表特性或者想脫離數據庫依賴那就用SQL來實現。

  • 上一篇:星際寶貝、有多少集?
  • 下一篇:八月打算去雲南麗江昆明大理旅遊 看天氣預報說都是暴雨大雨之類的會對出行造成影響嗎?還是說都是陣雨
  • copyright 2024編程學習大全網