That's more of an OR layer between the apps and the db. Our objects typically depend on a unique identifier being passed in to the constructor. If the object doesn't alreayd exist (in the db) the app first has to call a static method in a separate library file to create the record in the db and return the id. Then the id can be used to create the object.
We've got a bad history of badly-written classes that can be used both for pre-existing records and for creating new ones. To start using the business objects as an OR layer would require cleaning up a lot more code first. Like the fact that probably over half our pages still have direct db access. I'd like to fix that mess before worring about an OR layer.