Baixe o app para aproveitar ainda mais
Prévia do material em texto
TÉCNICAS DE PROGRAMAÇÃO Neusa Liberato Evangelista Revisão Avaliação 1 01 No modelo cliente-servidor, cliente e servidor normalmente executam em máquinas diferentes, por isso é chamado modelo two-tier systems. Cliente/Servidor 02 Camadas físicas, também chamada Tiers, são executadas em processos ou máquinas diferentes, as trocas de dados são através de protocolo de comunicação e há tráfego de rede quando em máquinas diferentes. Camadas lógicas (Layers), são executadas no mesmo processo das outras, as chamadas e trocas de dados através da invocação de métodos, e ocorre conversão de dados (tipo ou estrutura) entre as camadas. Normalmente, uma arquitetura em três camadas é uma arquitetura distribuída. Isto é, a camada de interface executa na máquina dos clientes. A camada de negócio executa em um servidor, muitas vezes chamado de servidor de aplicação. E, por fim, temos o banco de dados. 03 Atual e na prática Regra geral do isolamento é que uma camada pode conhecer camadas inferiores, porém não pode conhecer camadas superiores, ou seja, ela não deve fazer chamadas a recursos de uma camada superior. 04 Sob o ponto de vista do usuário e da aplicação, Aplicações Web são executa das dentro do navegador. Os dados do usuário, ou seja, aqueles que as aplicações web acessam podem estar arma zenados em servidores nos centros de dados da Internet, Intranet ou Extranet. Fonte: https://reinvently.com/blog/fundamentals-web-application-architecture/ INTERNET EXTRANET INTRANET 05 Características de Aplicações Web: Uso da Web para aplicações e serviços. Aplicações executadas dentro do navegador. Uso dos protocolos web para acessar informações em servidores. Geração de páginas dinâmicas do lado servidor. Projetadas para serem interativas e dinâmicas. Limitações e questões importantes: Indisponibilidade ou lentidão da Internet (rede). Segurança 06 Aplicações Web podem ser acessadas de todos os navegadores da Web e em vários dispositivos pessoais e empresariais. Porém, há várias razões pelas quais uma aplicação web pode não executar corretamente em qualquer navegador. Aqui estão algumas das causas mais comuns: 1. Incompatibilidade de navegador: Diferentes navegadores interpretam o código HTML, CSS e JavaScript de maneiras ligeiramente diferentes. O que funciona perfeitamente em um navegador pode não funcionar tão bem em outro. 2. Versões desatualizadas de navegador: Às vezes, uma aplicação web pode usar recursos ou tecnologias mais recentes que não são suportadas por versões mais antigas de navegadores. Isso pode levar a problemas de compatibilidade e funcionalidade. 07 3. Problemas de renderização: Alguns elementos da página podem não ser renderizados corretamente devido a problemas de layout ou estilização inadequada. Isso pode resultar em elementos sobrepostos, tamanhos de fonte incorretos, cores erradas, etc. 4. Configuração do navegador: Configurações específicas do navegador, como bloqueadores de pop-up, bloqueadores de JavaScript, configurações de segurança, etc., podem interferir na execução correta da aplicação web. Para garantir que uma aplicação web funcione corretamente em vários navegadores, é importante realizar testes extensivos e utilizar práticas de desenvolvimento compatíveis, como seguir padrões da web. 08 Padrões arquiteturais propõem uma organização de mais alto nível para sistemas de software, incluindo seus principais módulos e as relações entre eles. Arquitetura MVC define que as classes de um sistema devem ser organizadas em três grupos: Visão, Controladora e Modelo. Controller recebe as requisições e interage com Visão e Modelo. Vantagens de arquiteturas MVC: especialização do trabalho de desenvolvimento, um modelo ser usado por diferentes visões, favorece testabilidade, favorece baixo acoplamento e alta coesão, escalabilidade. 09 Na arquitetura baseada em microsserviços, grupos de módulos são executados em processos independentes (serviços), sem compartilhamento de memória. Microsserviços podem ser implementados usando tecnologias diferentes, incluindo linguagens de programação, frameworks e bancos de dados. Single Page Applications (SPAs): carrega para o navegador todo ou grande parte do código, incluindo páginas HTML e scripts em CSS e JavaScript. Assim o usuário tem a impressão de que ele está usando uma aplicação local, pois não ocorre mais uma atualização da página do navegador toda vez que ele gera certos eventos. Diversas aplicações modernas são SPAs: GMail, Trello,GitHub. 10 @Entity public class Funcionario { @Id private Long id; private String nome; @ManyToOne @JoinColumn(name = "departamento_id") private Departamento departamentoLotado; @OneToOne(mappedBy = "gerente", cascade = CascadeType.ALL) private Departamento departamentoGerenciado; // Getters e setters omitidos para clareza } @Entity public class Departamento { @Id private Long id; private String nome; private String ramal; @OneToOne @JoinColumn(name = "gerente_id") private Funcionario gerente; @OneToMany(mappedBy = "departamentoLotado") private List<Funcionario> funcionariosLotados; // Getters e setters omitidos para clareza } JoinColumn é informado no lado dominante da relação, ou seja, a entidade que possui a coluna que faz referência a outra entidade. departamento_id referencia o departamento do funcionário. gerente_id referencia o funcionário que é gerente do departamento. 11 @Entity public class Funcionario { @Id private Long id; private String nome; @ManyToOne @JoinColumn(name = "departamento_id") private Departamento departamentoLotado; @OneToOne(mappedBy = "gerente", cascade = CascadeType.ALL) private Departamento departamentoGerenciado; // Getters e setters omitidos para clareza } @Entity public class Departamento { @Id private Long id; private String nome; private String ramal; @OneToOne @JoinColumn(name = "gerente_id") private Funcionario gerente; @OneToMany(mappedBy = "departamentoLotado") private List<Funcionario> funcionariosLotados; // Getters e setters omitidos para clareza } mappedBy é informado no lado não dominante da relação, e não é obrigatório para que a relação seja estabelecida. 12 @Entity @Table(name=”funcionario”) public class Funcionario { @Id private Long id; @Column(name=”nome”, nullable=true) private String nome; ... Atributo name de @Table e de @Column são opcionais, assim como as próprias anotações. Podem ser usadoss para melhorar a legibilidade ou não ser usados. Só se tornam obrigatórias quando os nomes da classe e propriedades do Java são diferentes dos nomes de tabelas e colunas do banco de dados. Se a coluna nome no banco não permite nulo (NOT NULL), informar nullable=true pode resultar em erro no banco de dados pois permitirá enviar um comando INSERT ou UPDATE com nome nulo. 13 @Entity public class Funcionario { @Id private Long id; private String nome; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "departamento_id") private Departamento departamentoLotado; ... JPA usa carregamento Fetch Lazy por padrão. Isso significa que as entidades associadas só são carregadas do banco de dados quando explicitamente acessadas. Usar FetchType.EAGER quando é certo que os dados referenciados serão usados logo em seguida. Nesse caso, o carregamento Eager garante que todos os dados necessários já estarão disponíveis, minimiza o número de consultas ao banco de dados e pode melhorar o desempenho. OBRIGADA Neusa Liberato Evangelista
Compartilhar