WebApps em Java com uso de Frameworks Fred Lopes Índice O que são frameworks? Arquitetura em camadas Arquitetura de sistemas WEB (WebApps) Listagem resumida de frameworks Java Hibernate O que são frameworks? Em português: “Arcabouço” Definição: “estrutura de suporte definida em que um outro projeto de software pode ser organizado e desenvolvido” [wikipedia.org] Pode incluir: Programas de suporte Bibliotecas de código Linguagens de script etc. Facilitam o desenvolvimento de software: oferecem serviços de baixo nível Permite que a equipe de desenvolvimento se preocupe mais com os requisitos funcionais. São específicos para determinado domínio Implementam funcionalidades que podem ser úteis para diversas aplicações. Arquitetura em camadas Arquiteturas centralizadas Dominantes até década de 80 Interface não amigável Arquiteturas em camadas Melhor aproveitar os PCs da empresa Melhor interface gráfica Integrar desktop e os dados corporativos 2 camadas Primeiros sistemas cliente-servidor Cada cliente trata das regras de negócios e da interface gráfica (UI) Base de dados funciona em um servidor Problemas Grande esforço de manutenção Reinstalação em todos os PCs Entre outros Arquitetura em camadas Tipo de arquiteturas em camadas 2 camadas Arquitetura em camadas Tipo de arquiteturas em camadas 3 camadas Camadas Camada de apresentação (UI) - desktop Camada de aplicação (regras de negócio) – servidor de aplicação Camada de dados – servidor de banco de dados Servidores não precisam estar necessariamente em máquinas diferentes Arquitetura em camadas Tipo de arquiteturas em camadas Arquitetura em camadas Tipo de arquiteturas em camadas 4 camadas Camada de apresentação – Navegador Web Camada de gerência de apresentação – Servidor Web Tomcat, etc... Camada de aplicação – regras de negócio Firefox, IE, Netscape, etc... Regras de negócio da aplicação Camada de dados – SGBD MySQL, SQL Server, Oracle, etc... Arquitetura em camadas Tipo de arquiteturas em camadas 4 camadas Arquitetura de sistemas WEB Utilizam o modelo 4 camadas Passos de uma requisição do usuário Navegador faz requisição ao servidor web Servidor web repassa requisição ao servidor de aplicação Servidor de aplicação faz processamento. Se necessário, consulta banco de dados (SGBD). SGBD responde consulta do servidor de aplicação Servidor de aplicação responde ao Servidor web Servidor web transforma resposta em html e a envia para navegador Navegador renderiza o html para o usuário. Listagem resumida de frameworks Java ...voltando para os frameworks Frameworks podem ser utilizados em diferentes camadas Existem várias categorias de frameworks, sendo algumas delas: Framework para persistência de dados Framework para testes Framework para serviços web Outros frameworks Listagem resumida de frameworks Java ...voltando para os frameworks Frameworks para persistência de dados Provêem camada de abstração entre a aplicação e o armazenamento de dados Em alguns casos realizam mapeamento objeto-relacional Exemplos: Hibernate JDO Ibates Listagem resumida de frameworks Java ...voltando para os frameworks Framework para testes Facilitam a execução de testes dos sistemas Exemplos JUnit Cactus Listagem resumida de frameworks Java ...voltando para os frameworks Framework de aplicação Um framework de aplicação é uma aplicação reutilizável e semicompleta que pode ser especializada para produzir aplicações personalizadas (SPIELMANN) Disponibiliza vários componentes reutilizáveis, cada um para prover uma abstração de um componente em particular Permitem alto nível de padronização das aplicações Exemplos Struts JSF Jbanana (brasileiro) Listagem resumida de frameworks Java ...voltando para os frameworks Outras categorias de frameworks... Log4J Geração de Log do sistema Jasper Report Geração de relatórios dinâmicos Spring Serviços de controle de transações, segurança e exposição de serviços remotos . Amplamente utilizado em conjunto com framework de persistência e de serviços web. Ant Automatização de instalação da aplicação (build e deploy) Hibernate Framework para persistência de dados para Java Provê mapeamento objeto-relacional Existe tb versões para outras linguagens Definição do mapeamento objeto-relacional em XML Linguagem de consulta OO (HQL - Hibernate Query Language) Desenvolvedor se “livra” do SQL Isso é, muito do código de acesso ao banco não é mais necessário de o desenvolvedor escrever Hibernate Hibernate Características Relacionamentos entre classes (many-to-one, many-to-many, one-to-one, etc) Dialetos (MySQLDialect, OracleDialect, PostgreSQLDialect, etc) Aplicação com hibernate Hibernate Properties File arquivo xml que relaciona as propriedades do objeto aos campos da tabela Hibernate Java Library HQL (Hibernate Query Language) Java Class Files arquivo (xml ou properties) contendo as propriedades de conexão ao banco Hibernate Mapping (XML) File objeto cujo estado vai ser persistido Database Schema tabela no banco de dados Hibernate Cenário exemplo: JSP Servlet SQL HQL Hibernate BD Hibernate Properties file Server.xml Properties Hibernate Classe Hibernate Mapeamento XML Hibernate DAO sem hibernate – inserir novo usuário Hibernate DAO sem hibernate – listar usuários Hibernate DAO com hibernate – inserir novo usuário