This is all the documentation that there is in the developer’s guidelines, https://docs.mendix.com/howto/general/dev-best-practices#4-1-domain-models:
4. General Guidelines & Best Practices
4.1 Domain Models
4.1.1 Attributes
Using calculated (virtual) attributes is discouraged. These introduce a performance risk since they need to be calculated every time the object is used, regardless of whether the attribute itself is used.
4.1.2 Inheritance
When using inheritance (specialization/generalization), it is recommended to use no more than two levels for performance reasons.
4.1.3 Delete Behavior
Delete behavior must be specified where possible. Delete behavior must, however, never be relied upon when deleting large amounts of data. For performance reasons it is better to explicitly delete dependent objects when doing batch deletes.
4.1.4 Event Handlers
Event handlers on domain entities must be used with a lot of caution. They can quickly result in complex and possibly unexpected behavior when several of them are applied to a single entity. It is often best to make the execution of microflows more explicit by using sub-microflows that are called manually, for example, just before committing an object.
But there is also a 2 hour course on Advanced Domain modelling:
https://gettingstarted.mendixcloud.com/link/path/16