What is the motivation behind the "Table per Concrete Class Strategy" @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) ? It's not recommended, poor design, and optiional for persistence providers. Wouldn't it better not to put it in the spec ?
this mapping can be very useful when you have to work with an existing database schema.
Whether or not this mapping is poor design depends on the situation at hand and is generally in the eye of the beholder. If you have a number of concrete classes in a hierarchy with a large number of objects per class (read: a large number of rows in each table) *and* you only rarely need polymorphic access in your queries, then this mapping might actually be pretty good design.
Yes, what happens if you have a legacy databse, you can't change the databse design, and this is how it is laid out. No choice, but have to use this mapping.
Thanks both of you, I've got it In the spec, they could have made it mandatory for persistence providers then. I can't understand why they have decided to make it optional.