cesso estático ao gerente de entidades na primavera e arquitetura incom

pergunta rápida

Tenho aplicativo da web (wicket + spring + jpa) e estava pensando em um design de arquitetura bastante incomum. Por favor, verifique e dê seus comentário

Considera classe Wrapper:

@Service
public class Wrapper {
    protected static EntityManager entityManager;

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

como você vê, agora o EntityManager foi injetado estaticamente.

gora, considere a entidade simples DogEntity

@Entity
public class DogEntity {
   String name;
}

E para essa entidade criamos o 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);
  }
}

gora, no meu aplicativo da Web (no meu controlador), posso fazer algo assim:

saveButton = new Button("save") {

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

o ponto de vista do código, essa arquitetura parece perfeita. Temos wrappers representando objetos de negócios. Todos eles têm estado persistente, não há serviços estúpidos no aplicativo chamado DogSaver com o método save (DogEntity) que apenas chama persistir no gerenciador de entidades. O código realmente tem muita legibilidade e existem outras vantagens, mas não vou entrar em detalhe

O que realmente é minha preocupação é este EntityManager estático. Não tenho conhecimento suficiente sobre os internos da Spring para saber se essa abordagem é adequada e segura. Existem situações em que as coisas podem ficar feias? Eu sei que o EntityManare é sem estado (de acordo com as especificações da JPA), sempre leva o contexto de persistência da transação, tornando-o estático não parece uma má idéia. Mas temo que possa estar mexendo em alguma cois

Alguma ideia

questionAnswers(2)

yourAnswerToTheQuestion