2011-06-22 41 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),则可以长时间提高性能。这也意味着:想想可以缓存什么,什么不可以,有多长以及缓存可以和应该多大。所以它真的,真正取决于:)