Cuándo usar EntityManager.find () vs EntityManager.getReference () con JPA

Me he encontrado con una situación (que creo que es rara pero posiblemente bastante normal) donde uso el EntityManager.getReference (LObj.getClass (), LObj.getId ()) para obtener una entidad de base de datos y luego pasar el objeto devuelto a persistir en otra tabla.

Así que básicamente el flujo fue así:

class TFacade{

  createT(FObj, AObj) {
    T TObj = new T();
    TObj.setF(FObj);
    TObj.setA(AObj);
    ...
    EntityManager.persist(TObj);
    ...
    L LObj = A.getL();
    FObj.setL(LObj);
    FFacade.editF(FObj);
  }
}

@TransactionAttributeType.REQUIRES_NEW
class FFacade{

  editF(FObj){
    L LObj = FObj.getL();
    LObj = EntityManager.getReference(LObj.getClass(), LObj.getId());
    ...
    EntityManager.merge(FObj);
    ...
    FLHFacade.create(FObj, LObj);
  }
}

@TransactionAttributeType.REQUIRED
class FLHFacade{

  createFLH(FObj, LObj){
    FLH FLHObj = new FLH();
    FLHObj.setF(FObj);
    FLHObj.setL(LObj);
    ....
    EntityManager.persist(FLHObj);
    ...
  }
}

Recibía la siguiente excepción "java.lang.IllegalArgumentException: entidad desconocida: com.my.persistence.L $ EnhancerByCGLIB $ 3e7987d0"

Después de verlo por un tiempo, finalmente descubrí que era porque estaba usando el método EntityManager.getReference () que estaba obteniendo la excepción anterior ya que el método devolvía un proxy.

Esto me hace preguntarme,¿Cuándo es recomendable utilizar el método EntityManager.getReference () en lugar del método EntityManager.find ()??

EntityManager.getReference () lanza una excepción EntityNotFoundException si no puede encontrar la entidad que se está buscando, lo cual es muy conveniente en sí mismo. El método EntityManager.find () simplemente devuelve nulo si no puede encontrar la entidad.

Con respecto a los límites de la transacción, me suena como si necesitara usar el método find () antes de pasar la entidad recién encontrada a una nueva transacción. Si utiliza el método getReference (), probablemente terminará en una situación similar a la mía con la excepción anterior.

Respuestas a la pregunta(5)

Su respuesta a la pregunta