Imaginem a seguinte situação: Sua empresa precisa desenvolver uma aplicação em Java, utilizando um banco de dados Oracle 10g e deseja utilizar swing no front-end. De nenhuma forma o client Swing conectará diretamente ao banco de dados. Ao invés disso, haverá uma camada intermediária para centralizar as regras de negócio e acesso aos dados.
Esta mesma camada poderá futuramente ser aproveitada em um cliente Web com Servlets e JSPs.
Quais tecnologias poderiam ser utilizadas na camada de negócios?
É possível desenvolver um front-end Swing que receba e envie dados à camada negócios, como uma típica interface de aplicativos de banco de dados (com tabelas de registros, master/detail, edição, consulta)?
Sei que a questão pode parecer evasiva demais, mais gostaria de saber quais tecnologias Java fornece para este tipo de solução, para então estudá-las mais detalhadamente.
Se alguém conhece Delphi e já ouviu falar em MIDAS, é exatamente este tipo de solução que procuro no Java.
Uma questão que ainda não tenho muito clara, indepente da tecnologia utilizada (EJB, Web Services) é em relação a troca de dados.
Suponho a seguinte situação: no front-end o usuário informa alguns dados para consulta de clientes. Consigo imaginar a forma de resposta de 2 maneiras.
O servidor efetua a consulta, com o ResultSet cria os objetos (no caso o bean Cliente) insere-os em uma Collection, serializa tudo e manda para o cliente que então deserializa e trabalha em cima dos objetos.
O servidor efetuar a consulta, e transforma o resultado para XML (por exemplo), e enviar para o cliente.
Qual a melhor forma de se trabalhar? Considerando que é possível que uma consulta retorne um grande número de linhas.
Talvez você não tenha entendido, ou eu tenha me expressado mal. A minha dúvida é em relação a forma como os dados são enviados pela camada de negócios e recebidas pelo cliente (no caso de uma consulta).
Quando desenvolver o EJB (se for este o caso), e implementar um método para consulta de clientes, por exemplo, qual a melhor forma de retornar estas informações? O método retorna uma collection? Poderia quem sabe retornar um XML, para então no front-end ler este XML e mostrar os dados de forma apropriada?
XML é padrão quando vc desenvolve Web Services ou SOA. Porém, dependendo da quantidade de chamadas à camada de aplicação, vc terá problemas de performance para serializar /deserializar XMLs. Escolha a solução que melhor atende seus requisitos …
Quando desenvolver o EJB (se for este o caso), e implementar um método para consulta de clientes, por exemplo, qual a melhor forma de retornar estas informações? O método retorna uma collection? Poderia quem sabe retornar um XML, para então no front-end ler este XML e mostrar os dados de forma apropriada?
[/quote]
Se for usar EJB, é melhor devolver a Collection de clientes mesmo. Se vc for usar um WebService, também (na verdade, no final das contas vai virar um xml, mas a sua aplicação não precisa saber disso - vai ser um processo transparente).
No último caso, você pode criar o seu próprio protocolo que trabalhe sobre o protocolo HTTP, e retorne os dados separados por vírgula por exemplo, mas aí já vai dar muito mais trabalho.
Estamos ainda em fase de definição. A princípio utilizaremos Web Services. Quais as principais vantagens/desvantagens entre EJB e Web Services?
Conheço muitos desenvolvedore que tem um certo receio de EJB.
Tenho percebido em vários fóruns esta mesma avaliação sobre Entiy Beans. Se várias pessoas concordam com isso, muito provável que seja complicado mesmo.
Em relação aos Session Beans, os mesmos apenas funcionariam como facades certo? Se for isso, o que estaria “por baixo” dos Session Beans? Seria recomdável fazer “na mão” mesmo os acesso aos dados, utilizando ResultSets, Statements, etc?