There are trade-offs either way. There are three options:
session beans with DAOs,
entity beans with DAOs and BMP (Bean Managed Persistence)
or entity beans using CMP (Container Manager Persistence).
With DAOs you have to know both how to use
JDBC well (not as easy as it seems) and how to use SQL. It is true that it gives you more control, and some projects use it for that reason. However entity beans with CMP has advantages of not needing to write database access code. The
EJB container can optimise the beans in ways that it cannot using DAOs. Effectively the container writes its own DAOs and can handles them with optimisations like read-only, caching, finder access and more. Also most container provide useful extensions to EJBQL. So it depends what you want to do in the end.
I think comparisons need solid benchmarks - anyone have a good list?