我們正在使用NHibernate訪問我們的數據庫。NHibernate沒有反思?
我們有數據庫,它存儲一個「配置」。我們有「修訂」的概念,這意味着我們數據庫中的每個表都有一個修訂版,當我們做出任何修改(甚至是小修改)時,我們數據庫中的每個字段都會被複制(除非修改不同)。
目標是能夠輕鬆地從一個版本切換到另一個版本,並且能夠刪除一個配置,並且仍然能夠從早期版本或舊版本切換。它意味着當我們改變配置時,我們在數據庫中做了大量的寫作(其他應用程序也必須讀取它)。
這個步驟可能需要很長時間(5-10分鐘,我們有很多表),而將其存儲在xml中需要10-20秒。在分析中花費了一些時間之後,我們有一種印象,NHibernate必須對數據庫映射到c#對象(使用我們的hbm.xml文件)進行大量反思。
我的問題:
- 怎樣的NHibernate中的每個對象的讀/寫性能,與反思,對不對?
- 它會在每次寫入時進行反射,還是存在一些優化(緩存,...?)
- 是否有避免這種「反射」的可能性?就像在build上創建/編譯一些類一樣(比如可以使用實體框架)?
- 如果我有一個工作的NHibernate模型,有什麼我可以做的「調整」數據庫訪問,而無需更改數據庫?
非常感謝您的幫助。
這是一個有趣的問題,但它非常寬泛,很難簡潔地回答。也許可以稍微分解一下。我也聽起來像這樣的一切的自動版本可能會真的殺死你的應用程序的性能。 – dove
最後我唯一的問題大多是「3.」這個問題,在我看來,所有其他問題只需要能夠回答這個問題。我願意提出建議,但我認爲這隻會拖延最終問題的複雜性。 是的,我完全同意版本控制有很多缺點,但是我們離不開它(這是一個很大的特性,已經工作了兩年))。 – J4N
您是否使用觸發器來複制數據? – dove