As you know JDBC abstracts the database access with a common interface for various RDBMS.
DAO is a pattern that abstracts data access mechanism when you have datasource in more than one form viz. RDBMS, OORDBMS, XML Respository, LDAP server etc.
Even in the case of a single datasource, you can use DAO's for data caching for data sets that do not change frequently to improve performance.
DAO's do not replace JDBC or any other J2EE API.