Part of the reason for the OR mapper bloat is that schemas tend to be echoed in code. There will (roughly) be a class for every table that mirrors the table structure... Note that code being auto-generated is still more code. Machine-generated bloat is still bloat. It hangs around and clutters up your view of the code and business logic.
My approach has been to auto-generate the DB, rather than the code. This takes 55 lines of code for my ADO store, including comments. That kind of bloat I can live with. :)
Doing it directly in the DB without an intermediate layer locks you into a specific DB (and vendor). It harms deployers by reducing their market choices. It harms developers by reducing their market (e.g. "your app works with MySQL, we only use Oracle for religious reasons; therefore, we're not buying your app"). Using an OR mapper allows the DB to take its rightful place as a commodity. A good OR mapper can make the DB nearly hot-swappable.