We have in our old client-server system with integer discriminator (referenced to hierarchically organized table of object types) in root entity(Objects), 4 level hierarchy and 15 child entity (Document (Invoice, Contract etc.)), Party (Person, Organization, Bank, etc.). It works through Oracle editable view with instead-of trigger and performs very well.
It looks like hibernate table-per-subclass approach but... Hibernate approach to runtime calculating of classname by outer joining all child entity I think is rather expensive. Using discriminator with <subclass> limited by one level of hierarchy.
What do you think will be best approach to refactoring this kind of data for Hibernate?