Really BeanMetaData is doing a little bit more than just keeping validation related data. It is also used to cache some reflection calls (aka class hierarchy and property names). I am tempted to say that to truly solve HV-589 one would have to separate these two things. A first step could be to see what happens when reflection is used (what is the real performance impact). After that the caching of reflection calls could be done in a different "cache".
If we are able to separate these two things it should be quite easy to have the placeholder approach.
There is a rather lengthy discussion related to this topic against this commit as well - https://github.com/hferentschik/hibernate-validator/commit/ebe874fbf8c24add30361a60550fe0b1acb0cdc8
Important seems to me:
If we are able to separate these two things it should be quite easy to have the placeholder approach.