Buscar

Revisão_AV1_UNI7_SI_TécnicasDeProgramação

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

Continue navegando