Olá, pessoal.
Por curiosidade, gostaria de saber a opinião de vocês sobre a utilização de EJB e DAO em WebServices.
O que acham mais adequado: Nos WebServices que serão consumidos por clientes, usar EJBSs que acessam DAOs, ou usar direto DAOs?
Tks!
Olá, pessoal.
Por curiosidade, gostaria de saber a opinião de vocês sobre a utilização de EJB e DAO em WebServices.
O que acham mais adequado: Nos WebServices que serão consumidos por clientes, usar EJBSs que acessam DAOs, ou usar direto DAOs?
Tks!
estranho…
sinceramente se vc usa ejbs nao vejo a necessidade de acessar um dao, claro mantendo as coisas mais simples possiveis, mas cada caso é um caso.
um modo facil é anotar seus metodos ejb para que se tornem webservices e se for o caso realizar todas as buscas no banco com o EntityManager.
abrassss
Há que seja a favor de usar DAO/repositórios e há quem seja a favor de acessar o entity-manager direto. Eu particularmente prefiro usar repositório de dados independente de usar EJB ou não, pois assim facilita meus testes unitários e mantenho uma separação um pouco maior das responsabilidades.
Tem uma boa discução aqui, iniciada pelo Paulo Silveira: http://guj.com.br/posts/list/133946.java
Usei EJB no WebService:
@WebService
@Stateless
public class ModuloSinistroService {
@EJB
private ModuloRoEvent moduloRoEvent;
@WebMethod(operationName = "buscarSinistrosPorContrato")
public String buscarSinistrosPorContrato(@WebParam(name = "idContrato") final Integer idContrato, @WebParam(name = "casoEspecial") final boolean isCasoEspecial) throws Exception {
List<RoEvent> listaSinistros = new ArrayList<RoEvent>();
if (isCasoEspecial) {
listaSinistros = moduloRoEvent.buscarRosEventEspeciaisPorContrato(idContrato);
} else {
listaSinistros = moduloRoEvent.buscarRosEventPorContrato(idContrato);
}
return XMLUtil.converteParaXml(listaSinistros, RoEvent.class);
}
}
Decidi usar EJB, pois meu WebService será consumido por um cliente, porém os métodos do EJB serão utilizados também internamente no projeto. O que acham?
Tks!!