I'm coming up to speed on JPA and all was good until I started reading how Inheritence is implemented. My issue is that it seems incompatible with the principles of RDBMS. For example, in the Table-per-Class Strategy causes all of the root entity attributes to be redefined in the leaf entities that inherit from it thereby denormalizing the data model. It defeats the purpose of a normalized data model.

How does work in the real world? If a data modeler designs a normalized database model and developers want to use JPA how do they reoconcile? Does there need to be a discussion beforehand to commit a project to a JPA/ORM implementation/model?

I see the value in JPA by not having to deal with all the SQL code and abstracting from database implementations but.... I don't see how it flys with RDBMS principles. Please put me on the right path.