Is the DAO pattern still valuable in the time of ORM?The DAO discussion is surfacing again (previously), and there's one point I think is lacking from the current discussion: Testing.
It's a lot easier to mock or stub out PersonDao.getPersonByFirstName() method than EntityManager.createNamedQuery() blah blah blah. Don't mock infrastructure. Avoiding the database access is crucial to making your tests run as fast as possible.
The DAO tests themselves should access the database, of course, as well as the end-to-end functional tests. But running every test in the system against the database is simply uneconomical.