I would like to add one note... The art of Software Engineering is not just about getting things to work. It is about representing a complex problem as a set of intellectually manageable sub-tasks. That is the only way to ensure the correctness of the design and the software itself in the first place - before the software is even written. (Dijkstra said this, not me.) It is also the only way to ensure the ease of future maintenance. Software that is not elegant or intellectually manageable is bad software, period.
The project etienno refers to has over 2000 classes. Regardless of what one considers large, the only way to effectively comprehend and manage 2000 classes is to intelligently organize them by functional domains, ensure clear separation of tiers and concerns within the domains. Mixing DAO methods inside entity classes, marrying the business tier to Hibernate, and hardwiring data access logic into the business logic is a sure way to end up with an unmanageable mess. And I would bet that it's exactly what that "architect" has on his hands today.
Good luck, etienno. Your head is in the right place...
