Dúvidas Referente a Paadrões de Estrutra de Projetos Spring e Hibernate

2 respostas Resolvido
springhibernate
R

Estou iniciando no mundo Spring e Hibernate (mundo Java Web em geral) e minhas dúvidas são referentes a padrões pro projeto ficar bem estruturado, pois duvidas referentes a funcionalidades são facilmente achadas no google, já questão de padrão os tutoriais parecem não ter, então segue algumas dúvidas, se alguém puder responder ou indicar links me ajudaria muito.

Dúvidas Referente a Paadrões de Estrutra de Projetos Spring e Hibernate
Perguntas Diretamente ao Spring
-Nos “@RequestMapping” que ficam nos Controllers, parece muito errado colocar uma String, qual seria uma boa pratica ? De repente criar uma classe estatica com todas acoes ?
-Ainda nos controles, os returns geralmente são os nomes das nossas JPS’s, tenho a mesma dúvida em relação a colocar um String pura, ou algo como citei acima ?
-Também nos pequenos projetos que fiz, o Controller conversa direto com o Dao, imagino que precise de uma camada de negócio antes, mas mesmo me confundi com o termo MVC, se for por essa definição não tem essa camada, e se ela for padrão existir como declaramos isso geralmente, por exemplo em acesso a Dados é DAO
-Durante o desenvolvimento de pequenos projetos fui coletando Jars do Spring, Hibernate, etc. Até tentar montar uma estrutura padrão para projetos. Apenas com isso é “seguro” fazer uma aplicação assim e publicar na Web (Sinto que não e tudo gira em torno de um tal de Maven que não faço ideia de como usar ou o que é) ?
-E uma ultima dúvida, em diversos XML declaramos o endereço localhost, como isso é tratado quando precisamos enviar o projeto pra web ? Mudados manualmente antes de enviar ?
-Uma bonus se alguem puder responder, baixei o “Spring Tool Suite” tem realmente diferença em desenvolver nele do que no padrão Eclipse EE ? Quais são as vantagens ?

Em relação ao JPA (Hibernate)
-Num pequeno projeto que fiz, o Spring gerencia (Injeção de Dependencia) o “EntityManager” para nós, minha dúvida é se no persistence.xml, aonde tem o mapemanento do Hibernate podemos ter varios “persistence-unit” ? Como fiz um projeto pequeno não sei se é comum, e se tiver como o Spring vai saber qual utilizar ?
-Em relação ao JPA, é comum fazer o bean (Dto) exatamente como na tabela do Banco de Dados ? Pergunto pois se fizermos iguais não precisaremos utilizar tags como @Colunm e @Table nos beans para mapear os campos do banco de dados, se torna mais fácil se for igual, mas é certo ?

2 Respostas

J
Solucao aceita

1-@RequestMapping, ele simplesmente marca a action que será chamada quando o usuario entra neste link, o beneficio dele é que você consegue centralizar as rotas do seu site e por isso em si eu considero ela uma boa pratica.

2-você devolve o nome da jsp para ele ser direcionado para a pagina, não tem nada de mais, é uma string pura dizendo qual jsp deve ser selecionado para o spring.

3-sim, você devia ter uma camada de orm, seguindo as boas praticas do core j2ee
http://www.oracle.com/technetwork/java/dataaccessobject-138824.html, model, dao, service.
o beneficio que eu notei em utilizar esse padrão, está na hora de isolar as camadas de tratamentos de erros, com tudo já testado e pronto para uso. MVC-model, view, controler

MODEL - é a camada pura do objeto e também a onde iram ficar a camada de negocio, por exemplo. o (modelo) humano, contém idade, peso, altura. o que ele faz? (negocio)trabalha e corre. DAO-ele tem como objetivo conversar com o banco de dados, enviando e devolvendo respostas. (objetos de acessos a objeto) faz o CRUD(Create, Read, Update e Delete)- salvando dados do humano, como tempo em que se manteve correndo e horas trabalhadas.
SERVICE- esconde a camada dao, abstrai e ainda trata o que é para ser tratado da camada DAO. exemplo
service.addHumano
service.deleteHumano
service.searchAll
service.findById
service.findByName

assim sendo, quando estiver com o link, listaHumanos, na action você devolve todos com um service.serachAll, fica tudo tão simples haha.

Controller- não tem muito segredo, serão lá onde ficaram as suas rotas, que ficara responsavel entre chamar o service e as views, recuperando a informação e enviando a view para o usuário. Isso ajuda muito na organização. como mostrado no exemplo acima. Veja, você nem precisa saber como a camada service funciona, só chama ela e o método já sabendo que está tudo testado e ok para ser retornado ao requisitante.

na camada View não precisa de muita explicação, ela só será responsável por mostrar todas as
informações e erros que são enviados em todo este processo. são lá onde ficaram seus jsp.

4-não gira em torno do maven, ele só faz o controle de repositório que você colocou, isso ajuda na hora de compartilhar o projeto com outros usuários, para eles recuperarem as dependências necessárias para tudo funcionar, basta acionar o maven. Ele vai recuperar tudo sozinho e com eficiência, em vez de você procurar no google a fora, isso se souber o que ira precisar haha. (seguro?) Se você pegar os jars de lugares confiáveis onde diversos usuários já baixaram, por que não?fica um aviso, qualquer um pode colocar dependência no repositório maven e gradle.( não sou expert no assunto). Levando em consideração a isso, por exemplo. Você se sente seguro utilizando a biblioteca do java? por exemplo java.lang? Se sim, está e a respostas para as outras dependências.

5- você constrói o seu XML, ele é apenas uma estrutura, como JSON é também. podendo ser utilizado de qualquer forma, no caso do JSON ele é pura mente um objeto na linguagem java script.
Sendo assim, você pode utilizar de qualquer maneira. O objeto humano.nome, quando eu recupero no meu navegador, posso transformar esse cara em um objeto em meu sistema, tanto ele sendo JSON ou XML, por exemplo, Humano humano = humano. A unica coisa que vou ter que me preocupar é como o meu sistema ira consumir este XML ou JSON como falei. facebook.com/humano.xml ou facebook.com/humano.json por exemplo. Simplesmente tenho que converter a informação que venho na requisição.

6- Ele fornece um ambiente pronto para usar para implementar, depurar, executar e implantar seus aplicativos Spring, incluindo integrações para o Pivotal tc Server, Pivotal Cloud Foundry, Git, Maven, AspectJ e muito mais.

R

Obrigado por me ajudar !
Abs

Criado 22 de maio de 2017
Ultima resposta 25 de mai. de 2017
Respostas 2
Participantes 2