Desenvolvo usando Flex + Java + Hibernate + Spring (Usei o Spring, porque, o tutorial que eu usei para aprender essa integração usava essa arquitetura), e nem me importei nos reais benefícios que o Spring iria trazer (já que sempre tinha ouvido dizer que era bom usar,entre outras coisas, apenas coisas positivas).
Agora que aprender como realmente funciona o Spring, já peguei vários materiais na internet mas ainda não compreendi muito bem, uma coisa que eu não entendo.
Exemplo: Tenho a entity Usuario (com as propriedades do usuários), uma interface UsuarioRepository, com os métodos usados na UsuarioDao(que vai implementar os métodos.E também tenho uma UsuarioService que é uma interface(igual UsuarioRepository) que é usada para servir de interface para a UsuarioServiceImpl, que “instancia” os métodos criados no UsuarioDao.
Então, supondo a UsuarioRepository, tem no inicio da classe uma tag @Repository, e um metodo remove:
...
@Override
public void remove(Usuario usuario) {
getHibernateTemplate().delete(usuario);
}
...
No UsuarioServiceImpl, vai ter as tags @Service e @Transactional no incio da classe e o método remove
...
private UsuarioRepository usuarioRepository;
@Autowired
public void setUsuarioRepository(UsuarioRepository usuarioRepository) {
this.usuarioRepository = usuarioRepository;
}
@Override
public void remove(Usuario usuario) throws Exception {
try {
this.usuarioRepository.remove(usuario);
} catch (Exception e) {
throw new Exception("Não foi possível excluir." +e.getMessage());
}
}
...
Dúvidas:
1)Por que no UsuarioServiceImpl eu crio uma variável UsuarioRepository(que é a interface), em vez, de criar uma variavel do UsuarioDao (já que o UsuarioDao que tem a tag @Repository no inicio)?
2)No flex utilizo esses métodos para fazer o CRUD, com a tag RemoteObject.Só que não sei como faço para utilizá-las numa classe Java :shock:
Como eu faria em uma classe Java para remover um usuario usando esse método implementado? Ou em um servlet que use um dos métodos desses serviços?