acceso estático al administrador de la entidad en primavera y arquitectura inusual

pregunta rápida

Tengo una aplicación web (wicket + spring + jpa) y estaba pensando en un diseño de arquitectura bastante inusual. Compruébalo y da tus comentarios.

ontenedor de la clase @Consider:

@Service
public class Wrapper {
    protected static EntityManager entityManager;

    @PersistenceContext
    private void injectEntityManager(EntityManager entityManager) {
        Wrapper.entityManager = entityManager;
    }

omo ves, ahora tengo EntityManager inyectado estáticamente.

Ahora considere entidad simple DogEntity

@Entity
public class DogEntity {
   String name;
}

Y para esa entidad creamos wrapper Dog

public class Dog extends Wrapper {
  private DogEntity entity;

  private Dog(DogEntity entity) {
     this.entity = entity;
  }

  public static Dog create(String name) {
    entity = new DogEntity();
    entity.name = name;
    entityManager.persist(entity); // for a moment forget that this code is not in transaction
    return new Dog(entity);
  }
}

Ahora en mi aplicación web (en mi controlador) puedo hacer algo como esto:

saveButton = new Button("save") {

public void onSubmit() {
   Dog dog = Dog.create(name);
   // other code 
}

Desde el punto de vista del código, esta arquitectura se ve perfecta. Tenemos envoltorios que representan objetos comerciales. Todos tienen un estado persistente, no hay servicios estúpidos en la aplicación llamada DogSaver con método guardar (DogEntity) que solo llama a persistir en el administrador de la entidad. El código realmente tiene mucha legibilidad y hay algunas otras ventajas, pero no voy a entrar en detalles.

Lo que realmente me preocupa es este EntityManager estático. No tengo suficiente conocimiento sobre los aspectos internos de Spring para saber si este enfoque es adecuado y seguro. ¿Hay situaciones en las que las cosas pueden ponerse feas? Sé que EntityManare no tiene estado (según la especificación JPA), siempre toma contexto de persistencia de la transacción, por lo que hacerlo estático no parece una mala idea. Pero me temo que podría estar estropeando algo.

¿Alguna idea

Respuestas a la pregunta(2)

Su respuesta a la pregunta