Your question is valid. In most cases the ways of 'knowing' existence of entity are redundant.
In general, GUIDs are assigned to entities when they are created, this remains unchanged through the lifetime of the entity.
In case of entity creation via hooks:
- The incoming
entities will not have GUIDs as they are yet to be created, however
qualified name is available as it is required attribute for entities. This is used to detect existence of entities.
Qualified name has potential for change in the this scenario:
- Entities are moved across cluster as part of synchronization using Export & Import APIs. The GUID main same but qualified name can change to reflect the correct location of the entity. E.g. Database entity within cluster with name cl1 will have entities whose name is db@cl1. Importing this entity into a cluster with name cl2 should change the qualified name to db@cl2. This way the imported entities reflect their new home, whereas with guid it is possible to know that the same entity exists across clusters. Please take a look here in transforms.
Hope this helps.