M-am gandit sa fac o scurta comparatie intre doua framework-uri open source foarte populare, folosite atat de dezvoltatorii de aplicatii Java cat si de dezvoltatorii de aplicatii .NET (exista versiuni dezvoltate pentru ambele medii de dezvoltare).

Asadar, putem spune ca avem de aface cu doua framework-uri puternice, care insa prezinta cateva diferente:

iBATIS mapeaza obiecte peste rezultatul returnat de Query-uri SQL si nu tine cont de cum sunt create tabelele in DB, functionand foarte bine chiar si pe proceduri stocate.

Hibernate mapeaza obiecte direct peste tabelele din DB, folosind un sistem traditional de mapare DAO.

Hibernate are avantajul ca genereaza in mod automat toate SQL-urile necesare aplicatiei ceea ce implica un sistem de cashing mult mai performant.

In schimb, iBATIS este mult mai flexibil, mai ales daca sunteti un foarte bun programator SQL, deoarece avti un control mult mai bun asupra cum acestea sunt create. 

Hibernate lucreaza foarte bine daca se folosesc interogari standart (CRUD - create, read, update si delete sau filtrari dupa criterii) si daca s-a dezvoltat modelul de obiecte in prealabil.

iBATIS este o alegere mult mai buna daca se lucreaza cu un DB mostenit de la o alta aplicatie. 

Bineinteles ca nu discutam la absolut/ideal, ambele framework-uri sunt foarte bune fiecare avand avantaje si dezavantaje care pot fi puse in cumpana doar de cei care le folosesc, dupa o analiza amnuntita si o intelegere foarte buna a lor.