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

Spring Java Discussion :

SpringData Jpa et encapsulation des DataAccessException


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Par défaut SpringData Jpa et encapsulation des DataAccessException
    Bonjour,

    J'ai une classe de service Spring qui utilise des repositories développés à l'aide de SpringData JPA (implémentation Hibernate).
    Voici un bout de code de ma classe de service :
    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
     
    @Service
    public class TourneeServiceImpl implements TourneeService {
     
        @Autowired
        private TourneeRepository tourneeRepository;
        ...
     
    @Override
    @Transactional(rollbackFor = {ServiceException.class,DataIntegrityViolationException.class})
        public void modifierTournee(Long _tourneeId, String _intitule, Integer _intervalleGPS, String _commentaire) throws ServiceException,DataIntegrityViolationException {
            Tournee tournee;
     
            // Recherche de la tournee
            tournee = tourneeRepository.findOne(_tourneeId);
            if (tournee == null)
                throw new ServiceException("La tournée n'existe pas.");
     
            tournee.setIntitule(_intitule);
            tournee.setIntervalleGPS(_intervalleGPS);
            tournee.setCommentaire(_commentaire);
        }// La modification est effective en BD lors du commit de la transaction
    La méthode modifierTournee fonctionne bien. Mon problème est que je souhaiterais intercepter la levée de l'exception DataIntegrityViolationException dans ma méthode afin de lancer une ServiceException . Ainsi, tout client de mon service n'interceptera que des ServiceException et les exceptions de la couche Dao ne seront pas nécessairement visibles au niveau de la couche Client.

    Si quelqu'un peut me dire si cela est possible!
    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut ExceptionHandler
    Hello,

    Je suppose qu'un truc du genre doit marcher. Mais ça ressemble quand même un peu à de la bidouille et je suis quasi sûr qu'il existe un mécanisme plus intégré que ça. PS ; J'ai pas testé

    Dans ton controller :

    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
    27
     
    @ExceptionHandler(DataIntegrityViolationException.class)
     
    public void handleMySpeException(DataIntegrityViolationException ex, HttpServletResponse response) throws ServiceException
    {
       throw new ServiceException();	 
    }
     
    @Override
    @Transactional(rollbackFor = {ServiceException.class})
        public void modifierTournee(Long _tourneeId, String _intitule, Integer _intervalleGPS, String _commentaire) throws ServiceException {
            modifierTourneeWithServiceException();
        }
     
     
        private void modifierTourneeWithServiceException(Long _tourneeId, String _intitule, Integer _intervalleGPS, String _commentaire) throws ServiceException {
            Tournee tournee;
     
            // Recherche de la tournee
            tournee = tourneeRepository.findOne(_tourneeId);
            if (tournee == null)
                throw new ServiceException("La tournée n'existe pas.");
     
            tournee.setIntitule(_intitule);
            tournee.setIntervalleGPS(_intervalleGPS);
            tournee.setCommentaire(_commentaire);
        }
    A+

Discussions similaires

  1. Encapsulation des fonctions en javascript
    Par nicko_73 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/10/2009, 09h29
  2. Encapsuler des médias
    Par hyperbate dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 23/06/2009, 19h12
  3. Encapsuler des librairies dans une librairie
    Par bmw13fr dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 12/09/2007, 17h49
  4. L'encapsulation des données? à tout prix?
    Par koala01 dans le forum C++
    Réponses: 14
    Dernier message: 01/04/2007, 23h55
  5. Réponses: 2
    Dernier message: 20/03/2006, 09h39

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