@Override
    public void renouveler(Session session,
        PretDTO pretDTO) throws InvalidHibernateSessionException,
        InvalidDTOException,
        InvalidCriterionException,
        InvalidSortByPropertyException,
        ServiceException {
        if(session == null) {
            throw new InvalidHibernateSessionException("La session ne peut être null");
        }

        final MembreDTO unMembreDTO = pretDTO.getMembreDTO();
        final LivreDTO unLivreDTO = pretDTO.getLivreDTO();

        final List<ReservationDTO> reservations = new ArrayList<>(unLivreDTO.getReservations());

        try {
            if(!reservations.isEmpty()) {
                final ReservationDTO reservationDTO = reservations.get(0);
                final MembreDTO unMembre = reservationDTO.getMembreDTO();
                throw new ExistingReservationException("Le livre "
                    + unLivreDTO.getTitre()
                    + " (ID de livre : "
                    + unLivreDTO.getIdLivre()
                    + ") a des réservations "
                    + "au membre "
                    + unMembre.getNom()
                    + ")");
            }
            final List<PretDTO> prets = new ArrayList<>(unLivreDTO.getPrets());
            if(prets.isEmpty()) {
                throw new MissingLoanException("Le livre "
                    + unLivreDTO.getTitre()
                    + " (ID de livre : "
                    + unLivreDTO.getIdLivre()
                    + ") n'est pas encore prêté");
            }
            if(unMembreDTO.getPrets().isEmpty()) {
                throw new MissingLoanException("Le livre "
                    + unLivreDTO.getTitre()
                    + " (ID de livre : "
                    + unLivreDTO.getIdLivre()
                    + ") n'a pas été prêté à "
                    + unMembreDTO.getNom()
                    + " (ID de membre : "
                    + unMembreDTO.getIdMembre()
                    + ")");
            }
        } catch(
            ExistingReservationException
            | MissingLoanException ex) {
            throw new ServiceException(ex);
        }

        pretDTO.setDatePret(new Timestamp(System.currentTimeMillis()));
        updatePret(session,
            pretDTO);

    }