Salut à tous,

J'utilise, dans le cadre d'une application java, des classes Persistor, qui ne servent qu'à enregistrer les objet qu'on leur passe dans la base de données.

Mais ma base est en fait sur deux serveurs. Après quelques recherche, j'ai décidé d'appliquer une méthode dite du "commit à 2 phases" pour l'enregistrement des données.

Une méthode basique d'un Persistor est donc dans ce style:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
    public void save (Object o) throws PersistException {
 
        try {
 
            Customer c = (Customer) o;
 
            if (c.getId() != null) {
                this.updateLocal(c);
                this.updateRemote(c);
            } else {
                this.saveLocal(c);
                this.saveRemote(c);
            }
        } catch (ClassCastException cce) {
            throw new PersistException("Objet à sauver != Customer");
        } catch (Exception e) {
            tx.rollback();
            try {
                con.rollback();
            } catch (SQLException e1) {
                throw new PersistException("Erreur lors du rollback distant." + e);
            }
            throw new PersistException("Erreur lors de la sauvegarde." + e);
        }
    }
Le problème c'est que je ne sais pas comment attraper les exception d'Hibernate! Les méthode classiques style session.save/update/delete ne lancent aucune exception…
D'un autre côté, dans la doc, il est bien fait état d' HibernateExceptions, qui serait un wrapper pour toutes les exceptions qui pourraient se produire durant les transactions.

Qqun sait comment attraper ces exceptions?

Merci !

EDIT: modifié le titre, c'était pas top…