Если вы используете mapping-файлы, вы можете указать hibernate на ленивую загрузку сущностей.Таким образом, объект не будет загружен, пока вы не получите доступ к свойству.Ниже приведен пример настройки отложенной загрузки сущностей.Классы A и B всегда загружаются, но остальные загружаются только после того, как вы попытаетесь получить доступ к их свойствам.
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="TestNamespace.A, TestNamespace" table="A" lazy="false" />
<many-to-one name="B" column="B" />
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="TestNamespace.B, TestNamespace" table="B" lazy="false" />
<many-to-one name="C" column="C" />
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="TestNamespace.C, TestNamespace" table="C" lazy="true" />
<many-to-one name="D" column="D" />
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="TestNamespace.D, TestNamespace" table="D" lazy="true" />
<property name="SomeProperty" column="SomeColumn" />
</hibernate-mapping>
Удачи