Ajuda para entender o código

Ola Galera!

Esta olhando esta função que persist os dados no banco.

 @Override
      @Transactional(readOnly = true , propagation = Propagation.REQUIRED)
      public T salvar (T object)
      {
          this.getEntityManager().clear();
          this.getEntityManager().persist(object);
          return object;
      }

Porque o clear primeiro no entitymanager? Tem necessidade?

Desde já agradeço

Creio que seja para limpar quaisquer alterações que vc tenha feito na Entity que ainda nao foram persistidas.

Do livro Enterpries Javabeans, 3.0

"If you need to detach all managed entity instances from a persistence context, you can invoke the clear( ) method of the EntityManager. Be aware that when you call clear( ) any changes you have made to managed entities are lost. It is wise to call flush( ) before clear( ) is invoked so you don’t lose your changes."