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

JSF Java Discussion :

Gérer les exceptions de la base de données


Sujet :

JSF Java

  1. #1
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut Gérer les exceptions de la base de données
    Bonjour,

    J'aimerais savoir comment gérer au mieux les erreurs provenant de la BD. J'utilise JPA pour les interactions avec la BD.
    En effet, lorsque je veux supprimer une ligne ayant une FK sur une autre table, j'obtiens une erreur de contrainte du genre, que j'aimerais intercepter et ainsi mettre un message à l'utilisateur :
    Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: L'instruction DELETE est en conflit avec la contrainte REFERENCE "FK8B2553321AA62CC". Le conflit s'est produit dans la base de données "TEST_DB", table "dbo.GL_DEPARTEMENT", column 'GL_SOCIETE_ID'.
    Dans mon code, j'ai bien un bloc try-catch mais rien ne s'y passe, c'est comme si je ne voulais pas intercepter le bon type d'erreur

    Voici la méthode de suppression de mon ManagedBean :
    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
     
    public void supprimerSociete() {
    		try {
    			m_societeService.deleteSociete(getSelectedSociete());
     
    			FacesContext.getCurrentInstance().addMessage(
    					null,
    					Messages.getMessage("LaSocieteAEteSupprimeeAvecSucces",
    							FacesMessage.SEVERITY_INFO, null));
    		} catch (DAOException e) {
    			FacesContext.getCurrentInstance().addMessage(
    					null,
    					Messages.getMessage("ImpossibleDeSupprimerLaSociete",
    							FacesMessage.SEVERITY_INFO, null));
    		}
    	}
    Et la méthode de mon service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @Override
    	public void deleteSociete(Societe societe) throws DAOException {
    		try {
    			m_em.remove(m_em.merge(societe));
    		} catch (Exception e) {
    			throw new DAOException("fddc");
    		}
    	}
    De plus, j'aimerais, si possible, pouvoir "identifier" l'erreur et ainsi informer au mieux l'utilisateur pour qu'il sache la raison du problème (lien avec une FK, .....)

    Qqun saurait-il me renseigner ?

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est un fonctionnement assez courant en fait, tout dépend du moment où la transaction va être "commitée".
    En gros, ta couche IHM appelle la couche métier en demandant une suppression, la couche métier appelle la couche DAO pour faire l'instruction de suppression et rend la main à la couche métier.
    La question qu'il faut se poser est "Qui gère la transaction" ?
    Avec JTA, l'instruction "delete" passerait mais au moment du commit (qui se ferait à la sortie du conteneur EJB), tu te prends l'exception pour contrainte référentielle. Ton catch sur l'instruction delete n'a vu que du feu...

    Bref, le plus efficace (mais pas forcément le plus simple) est de tester avant de faire un delete TOUS les cas d'usages possibles... S'il y en a, on prévient...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Merci pour ta réponse.
    ça risque de pas être facile tout ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment gérer efficacement des listes en Base de données ?
    Par alexk dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 12/04/2005, 21h21
  2. Réponses: 4
    Dernier message: 29/11/2004, 17h51
  3. Connaitre les infos de la base de données
    Par cedric31 dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/07/2004, 13h59
  4. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 15h27
  5. Quel Outil pour les applis Industrielles ET bases de données
    Par ThierryAIM dans le forum Débats sur le développement - Le Best Of
    Réponses: 8
    Dernier message: 23/04/2003, 10h14

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