Do not use mapping when:
1. The existing database is itself a big hairball and mapping would result in
a) more development effort than not mapping would require, b) a huge
maintenance headache, c) poor performance.
2. Taking advantage of database facilities yields performance gains (stored
procedures, etc...).
3. The Java team cant modify the existing schema for the sake of better mapping.
Use mapping when:
1. Starting from scratch; use the object model to create the initial schema.
2. The existing schema is fairly simple and/or standard and therefore easily
mapped.
3. Theres no db team to rely on and the mapping tool would generate better
SQL than the Java developers could.
4. The type of data access required is simple CRUDs.
Use both when:
1. Mapping works for most of your application but there are a few corner cases
that are best implemented without mapping. Springs very handy in such
cases, allowing you to have a consistent API for the DAO layer, while
implementing most if it through mapping and some without mapping