Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>In a sense it's comparing apples to oranges. </p> <blockquote> <p>Which is better if you control both the data model and the application?</p> </blockquote> <p>They both work with normalized databases well, so they are more-or-less equal if you can shape the db. iBatis is better at mapping to legacy databases since it doesn't actually care about the database structure at all. It only cares about the shape of the result set.</p> <blockquote> <p>.iBATIS is repeatedly called simpler to learn - does this have long-term maintenance consequences (i.e. easy to start, hard to maintain)? </p> </blockquote> <p>It is much simpler, but that is because it has a much smaller featureset. I don't think it has any ticking timebomb long term maintenance issues. </p> <blockquote> <p>Do both make it easy to switch the underlying database vendor? </p> </blockquote> <p>Yes</p> <blockquote> <p>How skilled do your developers need to be with SQL? </p> </blockquote> <p>Both require a good knowledge of SQL. With iBatis, you still have to write the sql queries/procs. With NHibernate you have to know how to write NHibernate queries to get effective SQL. Neither are a replacement for SQL knowledge. </p> <blockquote> <p>Any major feature that one has that the other lacks? </p> </blockquote> <p>iBatis is a datamapper (a term used on the iBatis site). NHibernate is a full-blown Object Relational Mapper. iBatis is a great way to go if you primarily want something that takes the monotony out of mapping objects to result sets. However, it doesn't go all the way in trying to solve the object/relational mismatch. NHibernate has many more features such as dirty tracking, caching based on identity /identity map, flexible querying, dynamic sql, batching etc... NHibernate is much more dynamic in that it can do many things in one trip to the DB that could take iBatis several trips. </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload