Comment doit-on gérer un javax.la persistance.OptimisticLockException?

Je suis nouveau sur JPA donc pardonnez-moi si ne pas être clair.

Fondamentalement, je veux éviter les modifications concurrentes en utilisant le Verrouillage Optimiste.
J'ai ajouté le @Version attribut de ma classe d'entité.

J'ai besoin de savoir si cet algorithme sur la manipulation OptimisticLockException est son.
Je vais utiliser le Exécutez Autour De L'Idiome comme suit:

interface UpdateUnitOfWork 
{
    doUpdate( User user ); /* may throw javax.persistence.PersistenceException */
}

public boolean exec( EntityManager em, String userid, UpdateUnitOfWork work)
{
    User u = em.find( User, userid );
    if( u == null ) 
        return;

    try
    {
        work.doUpdate( u );
        return true;
    }
    catch( OptimisticLockException ole )
    {
        return false;
    }
}

public static void main(..) throws Exception
{
    EntityManagerFactory emf = ...;
    EntityManager em = null;

    try
    {
        em = emf.createEntityManager();

        UpdateUnitOfWork uow = new UpdateUnitOfWork() {
            public doUpdate( User user )
            {
                user.setAge( 34 );
            }
        };

        boolean success = exec( em, "petit", uow );
        if( success )
            return;

        //retry 2nd time
        success = exec( em, "petit", uow );
        if( success )
            return;

        //retry 3rd time
        success = exec( em, "petit", uow );
        if( success )
            return;
    }
    finally
    {
        em.close();
    }
}

La question que je me pose est de savoir comment vous décider d'arrêter de réessayer ?