AbstractClassMetadataFactory is the base of ClassMetadata object creation that contain all the metadata mapping information of a class which describes how a class should be mapped to a relational database.
This factory is used to generate metadata classes.
The default NamingStrategy
RuntimeClassMetadataFactory is the ClassMetadata object creation factory that runs at execution time, consuming pre-exising entity classes.
StaticClassMetadataFactory is the ClassMetadata object creation factory that sits behind the front-door, allowing to generate entity classes in case they do not exist yet.
Naming strategy implementing the underscore naming convention.