Surveiller ce forum | Commencer une nouvelle discussion Commencer une nouvelle discussion
REX iBatis [ Répondre ]
Par : Cyril Rocheteau on 2008-01-14 20:19
[forum:53100]

iBatis est un framework de mapping SGBD de la fondation Apache
URL : http://ibatis.apache.org/
Il est disponible pour java, dot net et ruby.
La documentation principale est en Anglais, et les tutorials sont disponibles en 7 langues, dont le français :
http://ibatis.apache.org/docs/java/pdf/iBATIS-SqlMaps-2-Tutorial_fr.pdf.

La version courante d'iBatis est la v2.3.0

Ses principales caractéristiques :
- supporte tout type de base de données avec driver jdbc,
- permet tout type d'ordre SQL : statement ou proc stock,
- s'intègre avec des approches JDBC seul,
- léger et simple d'utilisation,
- configuration et ordre SQL dans des fichiers XML,
- et, last but not least, paramètres nommés à la place des ? dans le sql.

Il dispose également de fonctions avancées : cache, limite du nb d'execution ou tx en //, ...


La configuration principale se fait dans un document SQLMap en indiquant les paramètres généraux comme le type de connexion (jdbc, pool via jndi, DBCP ...)
et les fichiers de mapping.

Avec iBatis, Une requête SQL de mise à jour s'écrit comme suit dans un fichier de mapping :

<update id="updatePerson" parameterClass="examples.domain.Person">
UPDATE PERSON
SET PER_FIRST_NAME = #firstName#,
PER_LAST_NAME = #lastName#, PER_BIRTH_DATE = #birthDate#,
PER_WEIGHT_KG = #weightInKilograms#,
PER_HEIGHT_M = #heightInMeters#
WHERE PER_ID = #id#
</update>

et on l'appelle en java via : sqlMap.update(“updatePerson”, person);
la classe personne possèdant des propriétés correspondantes aux paramètres (ie getId(), getFirstName () ...);

Il est également possible de factoriser des bouts de SQL, ex:
...
<sql id="Etat.A_FAXER">10</sql>
...
<select id="listAFaxer" ...>
SELECT ... from ... where ETAT = <include refid="Etat.A_TRAITER"/>
</select>

ou encore d'ajouter du SQL selon des conditions, exemple dans un where :

<select id="listAFaxer" ...>
SELECT ... from ... where ...
<isNotEmpty property="filtreAgent">
AND FILTRE = #filtreAgent#
</isNotEmpty>
</select>


Tout ça optimisé pour la perf via des PreparedStatement.


Nous l'utilisons déjà sur certaines de nos applications en production sans rencontrer de pb.
Il s'intègre sans aucun problème avec LISE avec ou sans JDBCWrapper.
iBatis est un bon candidat pour remplacer JDBCWrapper

FEDER Powered By FusionForge Collaborative Development Environment Charte d'utilisation / Nous contacter / Mentions légales Haut de page