Over the past several months there has been a lot of discussion surrounding O/R Mappers. I've added my thoughts at various times as can be seen in the following posts:
Overall I think the community is beginning to see the value of an O/R Mapper. There are certainly many people who still won't use one and don't see the value, which I certainly don't have a problem with.
Over the course of the last several weeks I've been contemplating the way SOA will affect the way I write applications. I've been challenged by a number of people on the way I've been approaching SOA (much appreciated!) and many have pointed out that OO and O/R Mappers just don't fit in with SOA because messages in our service oriented world don't map to our objects.
It seems to be that SOA introduces another aspect into the development of our applications. We currently struggle with how our objects are mapped to our data stores. With ObjectSpaces, EntityBroker, LLBLGen, and WilsonORMapper we have some answers to how we can reduce the headache that comes with mapping our objects to our relational data store. As I see it we have two options. We can either change the way we write applications, ditch our O/R Mappers, and start anew OR we can continue developing our applications in a similar fashion utilizing our O/R Mappers, rich object model, while also introducing a new OM (object message) Mapper.
A OM Mapper would take a approach very similar to what currently happens in the O/R Mapper space. Rather then mapping our objects onto a database, our objects would be mapped onto a message. This would allow us to work the way we currently work, in our nice OO world. Our O/R Mapper would sit behind our objects and help with the persistence of our objects, and our O/M Mapper would sit in front of our objects and allow them to be transformed into the messages that our services layer uses to communicate with the outside world.
I think I might have fallen off my rocker a bit with this thought, however, at this moment in time it seems like a valid concept. Why do we have to change the way we do everything? Perhaps I'm too attached to the way I write my applications. Perhaps I need to take on a nice sized SOA project and see the ease at which it allows me to adapt. Perhaps I need to stop trying to figure out ways to get my objects with behavior into the services world. Perhaps not?