What you describe is actually at least one more layer than the sample code seems to use. First a layer to abstract the db connection. Then a layer to model the db schema. Then a layer to map busines objects to the db schema layer. That makes perfect sense, but neither you nor any of the tutorials explicitly said that.
The objects I tend to work with are already way too large. We're working on refactoring, but we never considered moving the data access completely out of the business objects.
We're currently working on moving all db access out of the display pages and into the business objects. Maybe once that's done we can start moving it to it's own layer. I'm not confident it will be possible though, considering how ugly most of our shemata are.