В нашем продукте крайне важна производительность, потому что обрабатываются огромнейшие количества данных. Поэтому мы используем Entity на каждую таблицу, затем они переносятся в отдельные DAO объекты, которые реализуют логику связывания объектов, с предварительными проверками качества данных и т.п., а также возможностью подгружать данные не полностью. В этом случае часть данных, например специальные ключи, идентифицирующие записи или связи, подгружаются через jdbc, а не через Entity.