iBATIS - Débogage

Il est facile de déboguer votre programme tout en travaillant avec iBATIS. iBATIS a un support de journalisation intégré et il fonctionne avec les bibliothèques de journalisation suivantes et les recherche dans cet ordre.

  • Journalisation de Jakarta Commons (JCL).
  • Log4J
  • Journalisation JDK

Vous pouvez utiliser l'une des bibliothèques énumérées ci-dessus avec iBATIS.

Débogage avec Log4J

En supposant que vous utilisiez Log4J pour la journalisation. Avant de continuer, vous devez vérifier les points suivants -

  • Le fichier JAR Log4J (log4j- {version} .jar) doit se trouver dans le CLASSPATH.
  • Vous avez log4j.properties disponible dans CLASSPATH.

Voici le fichier log4j.properties. Notez que certaines lignes sont commentées. Vous pouvez les décommenter si vous avez besoin d'informations de débogage supplémentaires.

# Global logging configuration
log4j.rootLogger = ERROR, stdout

log4j.logger.com.ibatis = DEBUG

# shows SQL of prepared statements
#log4j.logger.java.sql.Connection = DEBUG

# shows parameters inserted into prepared statements
#log4j.logger.java.sql.PreparedStatement = DEBUG

# shows query results
#log4j.logger.java.sql.ResultSet = DEBUG

#log4j.logger.java.sql.Statement = DEBUG

# Console output
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %5p [%t] − %m%n

Vous pouvez trouver la documentation complète de Log4J sur le site Apaches - Documentation Log4J .

Exemple de débogage iBATIS

La classe Java suivante est un exemple très simple qui initialise puis utilise la bibliothèque de journalisation Log4J pour les applications Java. Nous utiliserions le fichier de propriétés mentionné ci-dessus qui se trouve dans CLASSPATH.

import org.apache.log4j.Logger;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import java.io.*;
import java.sql.SQLException;
import java.util.*;

public class IbatisUpdate{
   static Logger log = Logger.getLogger(IbatisUpdate.class.getName());

   public static void main(String[] args) throws IOException,SQLException{
   
      Reader rd = Resources.getResourceAsReader("SqlMapConfig.xml");
      SqlMapClient smc = SqlMapClientBuilder.buildSqlMapClient(rd);

      /* This would insert one record in Employee table. */
      log.info("Going to update record.....");
      Employee rec = new Employee();
      rec.setId(1);
      rec.setFirstName( "Roma");
      smc.update("Employee.update", rec );
      log.info("Record updated Successfully ");

      log.debug("Going to read records.....");
      List <Employee> ems = (List<Employee>) 
         smc.queryForList("Employee.getAll", null);
      Employee em = null;
		
      for (Employee e : ems) {
         System.out.print("  " + e.getId());
         System.out.print("  " + e.getFirstName());
         System.out.print("  " + e.getLastName());
         System.out.print("  " + e.getSalary());
         em = e;
         System.out.println("");
      }
      log.debug("Records Read Successfully ");
   }
}

Compilation et exécution

Tout d'abord, assurez-vous d'avoir correctement défini PATH et CLASSPATH avant de procéder à la compilation et à l'exécution.

  • Créez Employee.xml comme indiqué ci-dessus.
  • Créez Employee.java comme indiqué ci-dessus et compilez-le.
  • Créez IbatisUpdate.java comme indiqué ci-dessus et compilez-le.
  • Créez log4j.properties comme indiqué ci-dessus.
  • Exécutez le binaire IbatisUpdate pour exécuter le programme.

Vous obtiendrez le résultat suivant. Un enregistrement serait mis à jour dans la table EMPLOYEE et plus tard, le même enregistrement serait lu à partir de la table EMPLOYEE.

DEBUG [main] - Created connection 28405330.
DEBUG [main] - Returned connection 28405330 to pool.
DEBUG [main] - Checked out connection 28405330 from pool.
DEBUG [main] - Returned connection 28405330 to pool.
   1  Roma  Ali  5000
   2  Zara  Ali  5000
   3  Zara  Ali  5000

Méthodes de débogage

Dans l'exemple ci-dessus, nous avons utilisé uniquement info() Cependant, vous pouvez utiliser l'une des méthodes suivantes selon vos besoins -

public void trace(Object message);
public void debug(Object message);
public void info(Object message);
public void warn(Object message);
public void error(Object message);
public void fatal(Object message);