@Override
  public void update(Utilisateur updatedUtilisateur) {

    Session session = getSessionFactory().openSession();
    Transaction transaction = null;
    try {
      transaction = session.beginTransaction();
      Utilisateur utilisateur =
          (Utilisateur) session.get(Utilisateur.class, updatedUtilisateur.getId());

      utilisateur.duplicate(updatedUtilisateur);
      session.save(utilisateur);
    } catch (HibernateException e) {
      if (transaction != null) transaction.rollback();
      e.printStackTrace();
    } finally {
      transaction.commit();
      session.close();
    }
  }
  /** @see com.dao.UtilisateurDAO#select(com.beans.Utilisateur) */
  @Override
  public List<Utilisateur> select(Utilisateur utilisateur) {
    List listUtilisateurs = new ArrayList<Utilisateur>();

    Session session = getSessionFactory().openSession();
    Transaction tx = null;
    try {
      tx = session.beginTransaction();

      Criteria criteria = session.createCriteria(Utilisateur.class);

      if (utilisateur != null) {
        if (utilisateur.getId() != null && utilisateur.getId() != 0)
          criteria.add(Restrictions.eq("id", utilisateur.getId()));
        if (StringUtils.isNotBlank(utilisateur.getPrenom()))
          criteria.add(Restrictions.eq("prenom", utilisateur.getPrenom()));
        if (StringUtils.isNotBlank(utilisateur.getNom()))
          criteria.add(Restrictions.eq("nom", utilisateur.getNom()));
        if (StringUtils.isNotBlank(utilisateur.getAdresseMailPrincipale()))
          criteria.add(
              Restrictions.eq("adresseMailPrincipale", utilisateur.getAdresseMailPrincipale()));
        if (StringUtils.isNotBlank(utilisateur.getAdresseMailNotifications()))
          criteria.add(
              Restrictions.eq(
                  "adresseMailNotifications", utilisateur.getAdresseMailNotifications()));
        if (StringUtils.isNotBlank(utilisateur.getDateNaissance()))
          criteria.add(Restrictions.eq("dateNaissance", utilisateur.getDateNaissance()));
        if (utilisateur.getEntreprise() != null
            && utilisateur.getEntreprise().getId() != null
            && utilisateur.getEntreprise().getId() != 0)
          criteria.add(Restrictions.eq("entreprise", utilisateur.getEntreprise()));
        if (utilisateur.getSetGroupes() != null)
          criteria.add(Restrictions.eq("setGroupes", utilisateur.getSetGroupes()));
      }

      listUtilisateurs = criteria.list();

      tx.commit();
    } catch (HibernateException e) {
      if (tx != null) tx.rollback();
      e.printStackTrace();
    } finally {
      session.close();
    }
    return listUtilisateurs;
  }