Popular social site MySpace.com, which is the number 5 most trafficked site on the internet according to alexa.com is running a .NET backend and uses iBatis.NET for persistence. iBATIS is an open source data mapper framework that couples objects with hand-written stored procedures or SQL statements via XML descriptors. It is simpler to use than most ORM and is commonly used when projects wish to control the SQL used instead of having it generated by an ORM framework. While iBATIS is heavily used in the Java world, it is not as well known in the .NET community. InfoQ had a chance to speak with Clinton Begin, the founder of iBATIS.
This past spring 2006 MySpace architect Chris Bissell mentioned their iBATIS use on the iBATIS forums:
MySpace.com is now running IBatis for a good portion of its data access abstraction layer. We like the flexibility. I came in from a 'heavier' ORM background but very much appreciated the configurability IBatis offers against a changing data storage medium, because we have a whole range of heavily denormalized databases.
When asked about why developers would choose iBATIS vs. ADO.NET or another persistence layer solution, Clinton replied:
iBATIS is a hybrid persistence solution that targets enterprise database systems. It combines the best features of object/relational mappers, while maintaining the ultimate flexibility of hand coded SQL.
As for properties using iBATIS, developers need only look to the iBATIS wiki and Clinton had this to say:
Many proud users of iBATIS have volunteered their identities and commented on their experience on our mailing list and on our wiki. Some of the more well known ones include 1Up.com, the popular video game community site, and MySpace.com uses the .NET version of the framework.
Looking to what is in store for future releases of iBATIS, Clinton offered:
In my opinion, iBATIS is pretty much feature complete. To build in any more features would move the framework outside of its intended scope. However, there is a lot we can do to improve the framework. With each release we've made the framework smaller and simpler, without reducing features or performance. I'd like to continue that with the next major version. The area that needs to improve the most is configuration. iBATIS is currently dependent upon XML for configuration. I'd like to add alternative methods of configuration, including convention based, annotation [attributes for us .NETters] based and an API approach for programmatic configuration. Of course, we'll still support XML for those who know and prefer that approach.