From my own experience and observations, the object-relational mapping frameworks encourage the knowledge reduction since they offer access abstraction and not only the mapping itself. Some of the reasons for this claim are the following:
- The 100% concentration on the object orientation leads to the ignorance of technological finesses of the underlying database
- The ability to switch the database system behind the scenes is rarely necessary. Vendors of standard software and owners of legacy databases whithout the future are almost the only cases where such a switch would be needed
- O/RM abstracts from SQL. If you have SQL knowledge, why should you reduce it and go for a pseudo-QL or whatever query criteria langauges the frameworks offer?
- The O/RM framework knowledge must also have to be deep concerning the tuning, fetch strategies etc. - why invest here instead of investing into a very better knowledge of the database system? Well, one would be potentially "unportable" to an other database system, but this argument is very academic
- It is very, very difficult for a DBA to tune statements produced by the O/RM framework since they must go back tuned. The ideal usage of an O/RM framework says you shouldn't use native SQL, so you must trick around to make things work the way your DBA suggests
- The more abstract the framework the more common are the statements it produces the more untypical and unoptimized they are concerning the underlying database
- Not everything can be done optimally using a wrapping SQL standard such SQL-92. Starting using extensions provided by the underlying database means to violate the purity of the O/RM thought
- In the real world, you simply have situations where it's much more easier to work with results sets and generally flat representation of data instead of objects which cal also be very expensive in some cases
- One can also use native SQL with the O/RM. This leads to "unpure" abstraction, but in many cases would be the very welcome way if you want things to run instead of only going
The best way could be to mix both approaches. But to ignore the database means to reduce knowledge to me. There is no golden hammer, O/RM isn't any as well. I prefer to mix things which are working well for a concrete purpose instead of trying to do eveything using one tool.
A very wise statement I read somewhere on the web says: if your one and only tool is a hammer, every problem starts to become a nail.