Hibernate体系结构最佳实践

Hibernate体系结构最佳实践,hibernate,nhibernate,data-modeling,Hibernate,Nhibernate,Data Modeling,我最近不得不解决一个网格负载缓慢的性能问题。经调查,似乎有人使用了列表来填充网格。问题是Product对象有很多属性,其中许多不是.lazyloads(),其中大多数甚至不需要用于网格 因此,为了解决这个问题,我创建了一个名为ProductLite的新对象,该对象只有延迟加载、连接的大部分关键信息,现在性能非常好。而不是做10000分贝点击,它去了1 我向SO社区提出的问题是,如何为对象建模?我认为所有对象都应该有“详细信息”和“信息”版本,因为有时需要大量的对象加载。也就是说,ProductD

我最近不得不解决一个网格负载缓慢的性能问题。经调查,似乎有人使用了
列表
来填充网格。问题是Product对象有很多属性,其中许多不是.lazyloads(),其中大多数甚至不需要用于网格

因此,为了解决这个问题,我创建了一个名为ProductLite的新对象,该对象只有延迟加载、连接的大部分关键信息,现在性能非常好。而不是做10000分贝点击,它去了1

我向SO社区提出的问题是,如何为对象建模?我认为所有对象都应该有“详细信息”和“信息”版本,因为有时需要大量的对象加载。也就是说,ProductDetails将包含所有信息,并且不会在列表中使用,而ProductInfo将只包含用于列表、快速查找等的高级信息


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

这里的问题是您将域模型对象与DTO/表示模型对象混淆了

我通常不愿意将任何准则视为“最佳实践”,但这里有一些一般的提示:

  • 域对象应为每个表一个(不考虑继承)
  • 不应在映射中禁用延迟加载
  • 对实体和集合使用合理的批大小设置(经验法则:使用页面大小)
  • 至少对大多数只读对象使用缓存
  • 如果您真的只需要加载多个对象的几个字段,而不需要编辑对象,请使用投影(匿名、类型化、对象数组等)

这里的问题是您混淆了域模型对象与DTO/表示模型对象

我通常不愿意将任何准则视为“最佳实践”,但这里有一些一般的提示:

  • 域对象应为每个表一个(不考虑继承)
  • 不应在映射中禁用延迟加载
  • 对实体和集合使用合理的批大小设置(经验法则:使用页面大小)
  • 至少对大多数只读对象使用缓存
  • 如果您真的只需要加载多个对象的几个字段,而不需要编辑对象,请使用投影(匿名、类型化、对象数组等)

相关问题:哈哈,埃利安,几乎完全正确,抱歉我错过了。很高兴听到我在这场斗争中不是孤军奋战相关问题:哈哈,埃利安,几乎完全正确,抱歉我错过了。很高兴听到我在这场斗争中不是孤军奋战哇,迭戈,我的几条建议我都没考虑过,谢谢你的建议。很高兴听到这些伟大的指南…哇,迭戈,我的一些建议,我甚至没有考虑,谢谢你的建议。很高兴听到这些伟大的指南。。。