iBator, C'est quoi?

iBATOR, anciennement Abator (qui signifie : "Celui quis 'apaise d'une nuisance") est un outil générateur de code pour le framework iBatis.
Il est capable d'introspecter une ou plusieurs tables en base de données et de générer des "artefacts" utilisables par iBatis. Ces artefacts couvrent une majeure partie des procédures les plus fréquemment utilisés (CRUD).
iBator génère :

Les beans

Ce sont les POJOs (bon vieux objets java) pricipaux autour desquels votre application tourne. Ils sont en quequesorte la représentation de votre table (présente dans votre base de données) en objet java. Il peut s'agir :

Il peut y avoir une relation d'héritage entre ces classes. Dans ce cas, iBATOR peut être configuré pour générer un objet de domaine unique pour chaque table.

Les BeansExample :

Cette couche bien particulière sert à définir les contraintes de vos requêtes en base de données.
C'est sous cette forme d'outil que l'utilisateur va pouvoir gérer ses propres requêtes SQL en dynamique. Dans ce sens, iBATOR couvre une majorité des requêtes "simples".

Le fichier de mapping XML

Il s'agit d'un fichie XML de mapping SQL compatible pour iBATIS. C'est grâce à ce dernier que iBATIS gère la comunication BDD/Java. Il génère une liste de requêtes simples sur format CRUD. Cela implique :

Les fonctions peuvent varier en fonction de la table (ex : exclusions des BLOBs dans une requête de lecture)

Interfaces DAO et implémentations

Toutes les requêtes définies dans le fichier de mappings peuvent être appelées à travers la couche DAO. C'est cette couche qui permet uns utilisation appropriée et le lien entre les objets définis ci-dessus. Cela implique :

Comment l'installer, le configurer et l'utiliser?

Dépendance

iBATOR ne possède pas de dépendances spécifiques si ce n'est celle de la JRE. Il nécessite au minimum une JRE5.0. Il a aussi besoin d'un driver JDBC implémentant l'interface DatabaseMetaData (comme c'est le cas pour els drivers les plus utilisés de nos jours). Dans le cas de son utilisation à travers un plugin d'Eclipse, il vous faut aussi une version de ce dernier 3.4.1 minimum.

Installation

L'outil que nous avons utilisé pour la création de ce forum est le plugin d'Eclipse. L'installation du plugin se fait de la manière suivante :
Sélectionnez « Software Update » dans le menu « Help »
Cliquez sur « Add Site » dans l'onglet « Available Software »
Entrez l'URL suivante : http://ibatis.apache.org/tools/ibator
Validez
Cochez « Apache iBATIS iBator Feature »
Cliquez sur « Install »

Commencez par créer un projet type web dynamique :
File -> New. -> Other. -> Dynamic Web Project

Pour ajouter la librairie iBATOR, faites un clic droit sur le projet et sélectionnez : "Add iBATOR to build path"

Nous utiliserons une base de données OracleXE 10g. Pour assurer la liaison, nous aurons besoin de la librairie ojdbc14.jar fournie dans le *.war disponible en téléchargement (dossier Web Content/WEB-INF/lib).
Pour installer cette librairie, faites un glissé/déposé de votre librairie dans le dossier WebContent/WEB-INF/lib dans votre arborescence.

Faites ensuite un clic droit sur votre projet, allez dans le menu « Build Path » et cliquez sur « Configure Build Path. ». Une fenêtre s'ouvre alors. Cliquez sur « Add JARs. ». Allez chercher la librairie dans le dossier « lib » de votre projet et validez.

Pour tester cette librairie, nous allons commencer par créer une table en base de données. Oracle XE est disponible gratuitement sur le site d'oracle : http://www.oracle.com/technology/products/database/xe/index.html Une fois OracleXE installé, commencez par créer un compte avec le compte d'administrateur (login : System, vous avez défini le mot de passe lors de l'installation) Pour ce faire :

Créez ensuite une table (Utilisateurs, par exemple) que nous allons essayer d'importer avec l'aide des deux dernière librairies.

Configuration

Pour garder une certaine cohérence dans votre projet, créez un dossier dans votre arborescence (New-> Folder) pour y mettre les fichiers qui vont suivre. Faites un clic droit sur ce dossier et allez dans New -> Other. et sélectionnez « XML ». Appelez-le « iBATORConfig.xml » par exemple et cliquez sur « Next ». A l'étape suivante, sélectionnez « Create XML file from a DTD file » et passez à l'étape suivante. Sélectionnez la DTD présente dans l'archive *.war (dossier /dtd). Vous pouvez à présent cliquer sur « Finish ». Vous devriez maintenant voir apparaître le fichier XML suivant :


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ibatorConfiguration SYSTEM "../nom_du_projet /ibator/ibator-config_1_0.dtd" >
<ibatorConfiguration>
<ibatorContext id="idvalue0">
<jdbcConnection connectionURL="" driverClass=""/>
<javaModelGenerator targetPackage="" targetProject=""/>
<sqlMapGenerator targetPackage="" targetProject=""/>
<table tableName=""/>
</ibatorContext>
</ibatorConfiguration>

Nous allons modifier ce fichier afin de le rendre fonctionnel.

ibatorContext

Ce noud ne représente pas un intérêt majeur pour la fonctionnalité de notre exemple. Ainsi, nous laisserons l'attribut « id » seul. Le nous que nous allons lui donner est sans intérêt pour la suite.
jdbcConnection

Il suffit ici de remplir les différents champs.


<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"connectionURL="jdbc:oracle:thin:@//127.0.0.1:1521/xe"
userId="arel"
password="lera">
</jdbcConnection>

Attention! Vous pouvez faire un copier/coller mais n'oubliez pas de changer les identifiants.

javaModelGenerator

Le générateur de modèles fait partie de la génération des classes java. Afin d'éviter un certain nombre d'éventuels bugs, nous allons autoriser les subPackages.


<javaModelGenerator
targetPackage="nom_du_package.model"
targetProject="nom_du_projet">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
sqlMapGenerator

La configuration de ce noud est quasiment identique au précédent. Il est juste destiné à créer une partie différente du code.


<sqlMapGenerator
targetPackage=" nom_du_package.model.map"
targetProject=" nom_du_projet">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
daoGenerator

Ce noud n'est pas essentiel pour la configuration. Cependant il créée des interfaces d'accès de données, ce qui en fait un outil très intéressant. De plus il permet d'éviter certains bugs lors de la construction des classes.


<daoGenerator
targetPackage=" nom_du_package.model.dao"
type="SPRING"
targetProject=" nom_du_projet"
implementationPackage=" nom_du_package.model.dao.impl">
<property name="enableSubPackages" value="true" />
<property name="methodNameCalculator" value="extended"/>
</daoGenerator>
table

Pour finir, nous allons choisir les tables sur lesquelles nous allons travailler. Chaque table que nous allons transformer en objet JAVA doit être définie de la manière suivante.


<table tableName="nom_de_la_table"/>
classPathEntry

Il est nécessaire de définir le class path de la librairie jdbc. Ce noud doit être défini en dehors du noud de configuration ibatorContext.

<classPathEntry location="C:\workspace\Eclipse\nom_du_projet \WebContent\WEB-INF\lib\ojdbc14.jar"/>

Et voilà ! Voitre fichier de configuration est maintenant terminé !
Pour générer vos classes JAVA, il suffit de faire un clic droit sur votre fichier XML et de cliquer sur « Generate iBATIS Artifacts »

Mise à jour : Sur certaines versions, il se peut que l'option n'apparaisse pas. Si c'est le cas, remplacez :


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ibatorConfiguration SYSTEM "../nom_du_projet /ibator/ibator-config_1_0.dtd">

Par :


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ibatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Apache iBATIS Ibator Configuration 1.0//EN" "ibator-config_1_0.dtd">

Copyright - Site realisé par KDo, FatBen, Rom2, Prolo et Heliko