/** {@inheritDoc} */
  @Override
  public void delete(Connexion connexion, DTO dto)
      throws InvalidHibernateSessionException, InvalidDTOException, InvalidDTOClassException,
          DAOException {

    if (connexion == null) {
      throw new InvalidHibernateSessionException("La connexion ne peut être null");
    }
    if (dto == null) {
      throw new InvalidDTOException("Le DTO ne peut être null");
    }
    if (!dto.getClass().equals(getDtoClass())) {
      throw new InvalidDTOClassException("Le DTO doit être un " + getDtoClass().getName());
    }
    final PretDTO pretDTO = (PretDTO) dto;
    try (PreparedStatement deletePreparedStatement =
        connexion.getConnection().prepareStatement(PretDAO.DELETE_REQUEST)) {

      deletePreparedStatement.setString(1, pretDTO.getIdPret());

      deletePreparedStatement.executeUpdate();
    } catch (final SQLException sqlException) {
      throw new DAOException(sqlException);
    }
  }
  /** {@inheritDoc} */
  @Override
  public void add(Connexion connexion, DTO dto)
      throws InvalidHibernateSessionException, InvalidDTOException, InvalidDTOClassException,
          DAOException {

    if (connexion == null) {
      throw new InvalidHibernateSessionException("La connexion ne peut être null");
    }
    if (dto == null) {
      throw new InvalidDTOException("Le DTO ne peut être null");
    }
    if (!dto.getClass().equals(getDtoClass())) {
      throw new InvalidDTOClassException("Le DTO doit être un " + getDtoClass().getName());
    }
    final PretDTO pretDTO = (PretDTO) dto;
    try (PreparedStatement addPreparedStatement =
        connexion.getConnection().prepareStatement(PretDAO.ADD_REQUEST)) {

      addPreparedStatement.setString(1, pretDTO.getMembreDTO().getIdMembre());
      addPreparedStatement.setString(2, pretDTO.getLivreDTO().getIdLivre());
      addPreparedStatement.setTimestamp(3, pretDTO.getDatePret());
      addPreparedStatement.setTimestamp(4, pretDTO.getDateRetour());

      addPreparedStatement.executeUpdate();
    } catch (final SQLException sqlException) {
      throw new DAOException(sqlException);
    }
  }
  /** {@inheritDoc} */
  @Override
  public void add(Connexion connexion, DTO dto)
      throws DAOException, InvalidHibernateSessionException, InvalidDTOException,
          InvalidDTOClassException {
    if (connexion == null) {
      throw new InvalidHibernateSessionException("La connexion ne peut être null");
    }
    if (dto == null) {
      throw new InvalidDTOException("Le DTO ne peut être null");
    }
    if (!dto.getClass().equals(getDtoClass())) {
      throw new InvalidDTOClassException(
          "Le DTO doit être de la classe " + getDtoClass().getName());
    }
    PretDTO pretDTO = (PretDTO) dto;

    try (PreparedStatement statementAdd =
        (connexion.getConnection().prepareStatement(PretDAO.ADD_REQUEST))) {

      statementAdd.setString(1, pretDTO.getMembreDTO().getIdMembre());
      statementAdd.setString(2, pretDTO.getLivreDTO().getIdLivre());
      statementAdd.setTimestamp(3, pretDTO.getDatePret());
      statementAdd.executeUpdate();

    } catch (SQLException sqlException) {
      throw new DAOException(
          Integer.toString(sqlException.getErrorCode()) + " " + sqlException.getMessage(),
          sqlException);
    }
  }