iBATIS could be presented as an alternative to flurry of O/R mappers currently available:
http://sharptoolbox.com/Category74089b0a-1105-4389-b1db-eedf27e20cfb.aspx http://davidhayden.com/blog/dave/category/24.aspx?Show=All I hate it when I'm reviewing an O/R mapper and I see that they didn't quite handle every case and I need to write my own dynamic sql in-line inside of code! Other highlights could be that you don't have to keep re-generating generated code everytime you change the system. No need to inherit from special base classes or litter your code with attributes. Its very easy to come back to a project after 6 months and add in a new features. No need to worry if you still have the code generator installed or if the code generated with a newer version causes other parts of the system to break. Just open your mapping files and add your new query. If you've put some thought into your mapping style: <select id="BaseGetMany"> SELECT Id, Number, Name, City, State, Zip FROM Customer </select> <select id="GetMany" extends="BaseGetMany" resultClass="Customer"> ORDER BY Name </select> <select id="GetById" extends="BaseGetMany" resultClass="Customer"> WHERE Id = #Id# </select> Its trivial to add new functionality: <select id="GetByNumber" extends="BaseGetMany" resultClass="Customer"> WHERE Number = #Number# ORDER BY Name </select> Do I really need to open a program costing hundreds of dollars and navigate through its menuing system to make such a small change? iBATIS has come in handy for reporting too. Even the most complex conditional queries (AND this field, OR this field but not when this value is present) become simple. I feel a lot more in control of what's going on. I'm not afraid that some wacky join statement is being sent to the database. If I'm filtering records, I know for a fact that filtering is happening at the database and not inside a for() loop behind the scenes. Bringing your Logging topic into the picture, its now very easy to say "only log the UPDATE and INSERT queries coming from the Widget sql map file". That's been a tremendious help debugging issues on remote servers! Client's think you're magic when they tell you something is broke and you're able to read off the last couple values they entered before the app exploded :-) Its cut the time to track strange issues from hours to a matter of seconds...even if I didn't write the original code. You don't have to wait until your database is supported with its own dialect to start using iBATIS. I remember how easy it was helping Larry get the necessary values for the DB2 entry in the providers.config file. I think he was up and running within 15 minutes. Its very simple to target multiple databases. iBATIS gets out of your way really fast when you need it to: IDbConnection conn = sqlMap.LocationSession.Connection; Is that the kind of stuff you're looking for? --- Ted Husted <[EMAIL PROTECTED]> wrote: > > We're also considering ApacheCon US 2005, in San Diego in December. > > Followng are three presentations I'm thinking of submitting for > consideration. > > * Does anyone want to help out with any of these? > > * Does anyone have something in mind for iBATIS? > > ---- > > .NET @ ASF > > Like it or not, many open source developers are moving to the > Microsoft .NET platform -- and we're bringing our favorite tools with > us! In this session, we overview the ASF projects that are creating > software for .NET and Mono -- Logging, iBATIS, Lucene, and Struts -- > and show how our products work together to create leading-edge > ASP.NET > applications. >