/* (non-Javadoc)
   * @see fr.certu.chouette.dao.IDaoTemplate#update(fr.certu.chouette.model.neptune.NeptuneObject)
   */
  public void update(T object) {
    logger.debug("invoke update on " + type.getSimpleName());

    try {
      getHibernateTemplate().saveOrUpdate(object);
    } catch (HibernateSystemException hse) {
      if (hse.getCause() != null && hse.getCause() instanceof NonUniqueObjectException)
        getHibernateTemplate().merge(object);
      else throw hse;
    }
    // getHibernateTemplate().flush();
  }
  /* (non-Javadoc)
   * @see fr.certu.chouette.dao.IDaoTemplate#save(fr.certu.chouette.model.neptune.NeptuneObject)
   */
  public void save(T object) {
    logger.debug("invoke save on " + type.getSimpleName());

    try {
      getHibernateTemplate().saveOrUpdate(object);
    } catch (HibernateSystemException hse) {
      if (hse.getCause() != null && hse.getCause() instanceof NonUniqueObjectException)
        getHibernateTemplate().merge(object);
      else throw hse;
    }
    //		T existing = getByObjectId(object.getObjectId());
    //		if (existing == null)
    //		{
    //			getHibernateTemplate().saveOrUpdate( object);
    //		}
    //		else
    //		{
    //			object.setId(existing.getId());
    //			getHibernateTemplate().merge( object);
    //		}
    // getHibernateTemplate().flush();
  }