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.
> 

Reply via email to