iBATIS est un framework de persistance créé en 2001 et hébergé par la fondation Apache. Il permet de mettre en correspondance des requêtes SQL et des instances d'objet.
Le l'équipe de développement a décidé de se déplacer de l'Apache Software Foundation vers Google Code en changeant le nom du projet vers MyBatis.
Les requêtes SQL sont associées à des classes d'objets via des fichiers de définition XML. En d'autres termes, un SELECT en SQL via iBATIS renvoie directement l'instance (ou une liste d'instances le cas échéant) de l'objet correspondant.
Les objets mis en correspondance avec une relation doivent pouvoir être construits, renseignés et consultés (par des méthodes du type consultation/modification d'attributs) tels que les JavaBeans.
L'association peut se faire quasiment automatiquement, iBatis analysant les types de part et d'autre et effectuant les conversions qui correspondent aux attributs des classes et aux attributs des relations mises en œuvre.
Il est également possible de définir les correspondances manuellement dans des cas plus complexes nécessitant par exemple des conversions à la volée. Une requête peut, de plus, prendre des paramètres selon une correspondance donnée (correspondance paramètre) et renvoyer des résultats dans une autre (correspondance de résultat) ou dans un type prédéfini du langage utilisé. Il peut enfin s'agir d'objets correspondance basées sur les noms des champs de la relation.
Une seconde analyse de la requête instanciée est également possible à condition d'être explicitement demandée (cela permet par exemple d'avoir une partie de requête dynamique).
L'utilisation d'espaces de noms permet de catégoriser les mises en correspondance en fonction des différents domaines mis en œuvre dans l'application.
iBATIS dispose de différents modèles de cache pour éviter de relancer une requête sur la base de données si ce n'est pas nécessaire (mémoire simple, dernier utilisé, etc).
Il y a 4 manières de gérer la transaction :
Le framework est disponible sous licence Apache v2.0 pour les langages suivants :