I've noticed MetamodelImpl.getImplementors [1] method is invoked whenever a criteria is executed with list [2], getImplentors is iterating over all entity persisters available (>600 in my model) to resolve the implementors for a given class name, finally this causes a considerable overhead.
Given the implementors for a concrete class name would always be the same, wouldn't it be possible/make sense to cache them so that they are only computed once?
---
[1]
https://github.com/hibernate/hibernate- ... .java#L544[2]
https://github.com/hibernate/hibernate- ... java#L1863