yes, if the class is to be loaded lazily (through an association) then the methods must be virtual. classes are configured for lazily loading in two ways:
1) the association has a lazy="true" attribute:
Code:
<bag name="collection" lazy="true" ...>
...
</bag>
2) the class mapping file itself has a lazy="true"
Code:
<hibernate-mapping
xmlns="urn:nhibernate-mapping-2.0"
namespace="Your.Assembly.Namespace"
assembly="Your.Assembly">
<class
name="ClassName"
lazy="true"
... >
...
</class>
</hibernate-mapping>