使用大量数据优化NHibernate的建议

使用大量数据优化NHibernate的建议,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,对于NHibernate的一些类对象,我有一个相当复杂的映射。我所有的东西都映射正确;但是,保存项目需要大约10-15分钟,加载项目需要超过21分钟,这当然是不可接受的 这是我的情况 我有3个类,让我们称它们为Foo、Bar和Test。类Foo有一个属性,该属性是具有类Bar的多对一映射的列表。Bar有一个属性,它是一个具有类测试的多对多映射的列表。最后,Test有一个属性,它是一个具有类Bar的多对多映射的列表。所有三个类都具有与它们相关联的各种其他属性,这些属性属于正在加载的其他类类型 目前

对于NHibernate的一些类对象,我有一个相当复杂的映射。我所有的东西都映射正确;但是,保存项目需要大约10-15分钟,加载项目需要超过21分钟,这当然是不可接受的

这是我的情况

我有3个类,让我们称它们为Foo、Bar和Test。类Foo有一个属性,该属性是具有类Bar的多对一映射的列表。Bar有一个属性,它是一个具有类测试的多对多映射的列表。最后,Test有一个属性,它是一个具有类Bar的多对多映射的列表。所有三个类都具有与它们相关联的各种其他属性,这些属性属于正在加载的其他类类型

目前我还没有启用延迟加载,我计划很快尝试实现它,但我面临的问题是,这3个类的许多属性都需要立即启用

我的第一个问题是。我保存了250个Foo类、500个Bar类和1000个测试类。在加载我的第一个Foo类时,它正在加载其列表中的Bar,它反过来包含所有1000个测试类的列表,每个测试类都有一个所有500个Bar类的列表。NHibernate数据是否足够清楚地知道1000个测试类已经加载,500个Bar类已经加载,所以当它移动到下一个Foo类时,它不必再次重新加载所有的Bar和测试类

你们会推荐什么来提高性能

  • 启用延迟加载
  • 检查NHibernate日志以查看究竟选择了什么,或者使用NHibernate探查器
  • 考虑使用缓存

  • 谢谢,我有一个关于懒惰工作的概念性问题。启用延迟加载有助于将加载时间从22分钟缩短到20秒。谢谢