IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Persistance des données Java Discussion :

Utilisation d'IBATIS pour un debutant


Sujet :

Persistance des données Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 18
    Points
    18
    Par défaut Utilisation d'IBATIS pour un debutant
    Bonjour,

    Je dois faire une petite appli avec ce framework. Je n'ai encore jamais utilisé de framework.
    De quoi ai-je besoin ? (pour l'instant je dispose seulement d'eclipse et rien d'autre)
    Faut-il du temps pour pouvoir comprendre et utiliser ce framework ?

    merci

    edit : je dois, par exemple, pouvoir faire un update sur une base SQL server, puis en changeant seulement 1 ou 2 fichiers Properties ou xml, pouvoir faire cet update sur une base oracle.

  2. #2
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Points : 737
    Points
    737
    Par défaut
    J'ai effectué un projet avec IBATIS et j'ai trouvé celui-ci trés facile d'accès.
    Bien sûr, comme toute API de mapping objet, IBATIS est indépendant de la base de données (je te conseil d'utiliser des datasource pour plus de flexibilité)

    Eclipse est suffisant pour développer, ensuite tu as bien sur besoin du JAR de IMBAIS, d'une base de données et de son driver.

    Je te conseil d'aller chercher un petit tutoriel sur IBATIS, mais en gros la logique est : dans un fichier de configuration XML on définit quel requête correspond à quelle classe en mappant les résultat de la requête avec les propriété de la classe. C'est plus simple qu'hibernate, mais donc mois puissant/complet (mlais ce n'est qu'un point de vue, je ne voudrait pas rentrer dans des discussion pour/contre).

    Je ne trouve pas de tutoriel IBATIS en français, mais si la doc qui se trouve sur le site officiel ne te suffit pas, peut être qu'avec une recherche un peu plus poussé que la mienne tu en trouveras.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    J'ai trouvé un tuto en francais, mais j'arrive pas à le faire marcher ...
    http://people.apache.org/dist/ibatis...utorial_fr.pdf

    je suis pas un expert en java ... pourtant ca n'a pas l'air extremement compliqué ...

    J'ai les 3 .jar d'ibatis ms je sais pas comment m'en servir
    et la classe MyAppSqlConfig du tuto ne veut pas marcher (surement a cause de jar dont je ne sais pas me servir ...)

  4. #4
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Points : 737
    Points
    737
    Par défaut
    Il faut, pour que ça marche, que tes jar soit dans le classpath de ton application.

    Si tu est sous eclipse, il faut que tu place tes JAR dans un répertoir lib par exemple, et ensuite tu fait click droit sur ton projet, properties, java build path, puis que tu ajoute ton JAR au classpath.

    Jette un coup d'oeil à un petit tuto eclipse (il y en a sur developpez).

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    merci, j'ai reussi à compiler l'exemple du tuto

    cependant, j'obtient un erreur quand j'envoie une requete sur la base.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     com.ibatis.common.jdbc.exception.NestedSQLException:   
    --- The error occurred in Person.xml.  
    --- The error occurred while executing query.  
    --- Check the  SELECT PER_ID as id, PER_FIRST_NAME as firstName, PER_LAST_NAME as lastName, PER_BIRTH_DATE as birthDate, PER_WEIGHT_KG as weightInKilograms, PER_HEIGHT_M as heightInMeters FROM PERSON WHERE PER_ID = ? .  
    --- Check the SQL Statement (preparation failed).  
    --- Cause: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented
    Caused by: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented
    dans la requete il y a un "?", logiquement c'est une valeur qui doit etre entrée en parametre ... même si je la remplace directement par un nombre, j'obtiens tjrs la meme erreur.
    La requete est correcte, je l'ai exécutée avec succès hors du programme.

    J'ai cherché sur d'autres forums, et les personnes ayant le meme probleme n'ont pas trouvé de reponses ... erf ...

  6. #6
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Points : 737
    Points
    737
    Par défaut
    Tu utilise quoi comme base de données et quoi comme driver de base de données?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    "ODBC Microsoft Access Driver" = access de microsoft

    et il n'aime pas la fonction "Prepared statement" car access ne prend pas ce genre de requête, ou en tout cas peut être avec cette syntaxe.

  8. #8
    Membre éclairé

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Points : 737
    Points
    737
    Par défaut
    Effectivement, access n'est pas vraiment une base de données complète, et elle n'obéit que de loin aux standard de base de données.

    Donc tu risque d'avoir pas mal de problème. Là je ne peut pas t'aider, je ne connait pas trop l'utilisation d'access avec JAVA (j'en ai fait une fois ou deux mais il y a trés longtemps).

  9. #9
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Points : 13
    Points
    13
    Par défaut Ibatis avec Access
    Citation Envoyé par woodwai Voir le message
    Effectivement, access n'est pas vraiment une base de données complète, et elle n'obéit que de loin aux standard de base de données.

    Donc tu risque d'avoir pas mal de problème. Là je ne peut pas t'aider, je ne connait pas trop l'utilisation d'access avec JAVA (j'en ai fait une fois ou deux mais il y a trés longtemps).
    A cause d'un bug dans le driver JDBC-ODBC qui n'accepte pas les "longs" java (problème dans le setLong de PreparedStatement), il faut créer un "callbackHandler" (une classe java) qui va intercepter le traitement des "long" et les transformer en autre chose (j'ai choisi double) :

    package dao.ibatis;

    import com.ibatis.sqlmap.client.extensions.ParameterSetter;
    import com.ibatis.sqlmap.client.extensions.ResultGetter;
    import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
    import java.sql.SQLException;

    public class LongTypeHandlerCallback implements TypeHandlerCallback {

    public void setParameter(ParameterSetter setter, Object parameter) throws SQLException {
    if (parameter != null) setter.setDouble(((Long)parameter).doubleValue());
    }
    public Object getResult(ResultGetter getter) throws SQLException {
    return getter.getString() == null ? null : new Long(getter.getString());
    }
    public Object valueOf(String val) {
    return val == null ? null : new Long(val);
    }

    }

    et on utilise cela dans un parameterMap :

    <parameterMap id="crud-params" class="Etudiant">
    <parameter property="nom_etudiant" javaType="java.lang.String" jdbcType="VARCHAR" />
    <parameter property="prenom_etudiant" javaType="java.lang.String" jdbcType="VARCHAR" />
    <parameter property="option_etudiant.no_option" javaType="java.lang.Long" typeHandler="dao.ibatis.LongTypeHandlerCallback" />
    </parameterMap>

    <insert id="insert" parameterMap="crud-params">
    INSERT INTO Etudiants (nom_etudiant, prenom_etudiant, no_option)
    VALUES (?, ?, ?)
    <selectKey resultClass="long" keyProperty="no_etudiant" > SELECT @@IDENTITY AS ID
    </selectKey>
    </insert>

    J'espère que cela aidera tous ceux qui utilisent Access avec Ibatis, car j'ai cherché longtemps avant de trouver cette solution. A+

Discussions similaires

  1. [debutant] utiliser les DIV pour créé un menu.
    Par paterson dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 05/09/2008, 19h32
  2. Réponses: 4
    Dernier message: 28/05/2008, 00h13
  3. Réponses: 2
    Dernier message: 11/01/2008, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo