2011-06-22 70 views

回答

0

我Google'd爲有用的關鍵字的各種組合,我想出了一些有用的鏈接,指出你在正確的方向。請記住,生產環境中不會有「正確」屬性的單一,定義清單。人們會根據自己的經驗推薦一些東西,但是你必須嘗試一些東西,並用常識來找出最適合你的東西。

Hibernate Documentation of Available Configurable Properties

Sample persistence.xml file for MySql

我曾經有意識地記得更改爲PROD CONFIGS的唯一屬性是hibernate.hbm2ddl.auto財產,這將允許Hibernate通過自動執行DDL語句直接改變你的數據庫的架構。對於測試數據庫,通常使用「create-drop」值是有意義的,以便測試SessionFactory將爲您創建必要的表或者更改現有的表以匹配可能的最近的模式更改。在prod上,你不想讓Hibernate與你的模式混淆。即使是Hibernate的人也警告不要在生產環境中使用該功能,因爲數據完整性無法保證。您應該使用prod的值是「驗證」,它將簡單地驗證您連接的數據庫是否具有您的Hibernate實體映射到的正確架構,並且如果存在差異,它將無法加載SessionFactory。

2

它取決於你可以設置緩存大小,獲取深度(外連接),獲取批量大小和更多的東西。您可能不想記錄太多(show_sql =>設置爲false,format_sql =>設置爲false,use_sql_comments =>設置爲false)。

但是,這取決於你需要測量。

使用和正確配置連接池也很重要。 這裏再次:使用常識和措施。

希望,這些鏈接將被證明是有用的:

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html

問題的關鍵是獲得正確的模型。如果生成大量的SQL請求來執行大量的連接,性能將成爲問題。因此,如果性能至關重要,則必須考慮規範化,或者實際上不要在實體關係建模中進行過多的規範化。

此外,集合以及您如何建模/處理它們可以在性能方面發揮重要作用。

就緩存而言:根據您的使用情況,如果您正確配置二級緩存(例如Ehcache),則可以長時間提高性能。這也意味着:想想可以緩存什麼,什麼不可以,有多長以及緩存可以和應該多大。所以它真的,真正取決於:)