In short, I am discussing the significant differences between "the world of relations" and "the world of objects" and the strategies O/R frameworks like Hibernate and Castor try to overcome these. What seems simple at the first glance turns out to be very complex in many details. If you do not believe me, check out the size of the (very good) documentation of Hibernate. This is the meanwhile often discussed problem, that using Hibernate & Co requires excellent and detailed skills of that framework and the complexity of the undertaking is often underestimated by development teams.
The specific problem here, however, is that the lack of knowledge is not evident immediately. People think they have the framework under control and know whats happening and the mapping initially also might work fine, but during the runtime of the project it often turns out, that things are not so smooth as initially thought. Unfortunately severe problems and issues then bubble up at the worst of times. Very bad performance, severe memory problems, mapping issues, session problems and the like.
In the article I suggest to have a closer look to alternatives like the Spring jdbc templates or Apache iBatis or even to OO databases like db4o.
The bottom line is, even if some articles might suggest it, there is no single best or "default" solution. A good knowledge of the alternatives is required to choose the best framework for the specific problem.
p.s.: there are several articles in this blog dealing with related aspects, please check out the technology section or search for Hibernate, iBatis, Spring... I am honestly to lazy to link all of them here ;-)