Onde (que layer) para colocar métodos de consulta de entidade, “persistem” métodos etc.?

StackOverflow https://stackoverflow.com/questions/183366

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu tenho um aplicativo SEAM com algumas entidades JPA / Hibernate. E agora eu me pergunto onde colocar a minha consulta, persistência métodos.

A escolha padrão parece colocá-los em uma camada de feijão sessão com injetados

@PersistenceContext(...) @Inject EntityManager entityManager;

Mas eu acho que eu preferiria ter os métodos nas próprias entidades. Quais são os prós / contras?

  1. Testablity?
  2. Bondade?
  3. Desempenho?

E alguém tem links para as melhores práticas para interagir com o EntityManager etc. a partir de métodos sobre as entidades em vez de beans de sessão?

Best, Anders

Foi útil?

Solução

Eu não tenho nenhuma experiência com SEAM, mas a partir de minha experiência com projetos Java, eu achei mais fácil de manter feijão clara persistem métodos. O que costumo fazer:

  • Have feijão para objetos de negócios (como "Usuário" e "Setting", por exemplo)
  • Ter uma camada DAO que pode persistir e recuperar estes feijões (simples CRUD)
  • Tenha uma camada de serviço que nows como lidar com os feijões, e talvez até mesmo como construir um agregado de feijão

Desta forma, tudo é muito separados, e é fácil de unittest. Desempenho geralmente não é um problema com esta configuração.

Outras dicas

Sim, isso é também o que eu fiz antes.

Em geral, eu acho, EJB é incrivelmente detalhado e boilerplate'y, mas SEAM realmente ajuda um pouco, de modo que é por isso que, no meu projeto atual, a camada extra de beans de sessão apenas para consulta e persistem me irrita. Eu tenho a sensação de que eu poderia fazer um aplicativo razoavelmente concisa se eu poderia matar essa camada ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top