Hibernate架构的最佳实践

时间:2011-10-29 21:47:38

标签: hibernate nhibernate data-modeling

我最近不得不用缓慢的网格负载来解决性能问题。经过调查,看起来有人用List<Product>来填充网格。问题是Product对象有很多属性,其中很多都没有.lazyloads(),其中大部分都不需要网格。

因此,为了解决这个问题,我创建了一个名为ProductLite的新对象,它只有延迟加载,关于连接的大部分关键信息和性能现在都很好。它没有进行10,000次点击,而是达到了1。

我向SO社区提出的问题,您如何为对象建模?我认为所有对象都应该有“详细信息”和“信息”版本,因为有时需要加密对象。 IE浏览器。 ProductDetails 将包含所有信息而不会在列表中使用,而 ProductInfo 将只包含用于列表,快速查找等的高级信息。

是否有标准被采纳为建模对象的最佳实践?

1 个答案:

答案 0 :(得分:4)

这里的问题是你将域模型对象与DTO / Presentation Model对象混淆。

我通常不愿意将任何指南视为“最佳做法”,但这里有一些一般提示:

  • 域对象应该是每个表一个(不考虑继承)
  • 不应在映射中禁用延迟加载。 Good article about this
  • 对实体和集合使用合理的batch-size设置(经验法则:使用您的页面大小)
  • 使用缓存,至少对于大多数只读对象
  • 如果您真的需要加载许多对象的几个字段,而不需要编辑对象,则使用投影(匿名,类型,对象数组,无论什么工作)