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/表示模型对象混淆了 我通常不愿意将任何准则视为“最佳实践”,但这里有一些一般的提示:
- 域对象应为每个表一个(不考虑继承)
- 不应在映射中禁用延迟加载李>
- 对实体和集合使用合理的批大小设置(经验法则:使用页面大小)
- 至少对大多数只读对象使用缓存
- 如果您真的只需要加载多个对象的几个字段,而不需要编辑对象,请使用投影(匿名、类型化、对象数组等)
- 域对象应为每个表一个(不考虑继承)
- 不应在映射中禁用延迟加载李>
- 对实体和集合使用合理的批大小设置(经验法则:使用页面大小)
- 至少对大多数只读对象使用缓存
- 如果您真的只需要加载多个对象的几个字段,而不需要编辑对象,请使用投影(匿名、类型化、对象数组等)