java web
TRANSCRIPT
Java WEB no STI
Funcionário: Marcos CôrtesE-mail: [email protected]
Agenda
● Apresentação● Conhecimentos Básicos● Frameworks
○ JSF○ Spring○ Hibernate
Aplicações Java STI
CPD
Aplicações Java STI
● Nossas aplicações Web são compostas por:
○ JSF como front-end
○ Spring como controlador de serviços e transações
○ Hibernate como ORM
ArquiteturaView ModelController DB
Conceitos BásicosIOC / IC
FrameworkEscopo
IOC - Inversion Of Control
● O fluxo de controle da aplicação é da biblioteca e não ao programador
● Uma biblioteca deste tipo pode ser considerado um framework
Exemplo:
Jogo extends JogoFramework{ @Override public void update(){ …. }
@Override public void draw(){ …. }}
DI - Dependency Injection
O programador não deve se preocupar em criar a estrutura da aplicação, cabendo ao framework construí-la usando arquivos de configuração (XML) ou anotações
Exemplo:class pessoa{ @Inject List<Objetos> listObjetos;}
DI (exemplo)
Aplicação
ImpressaoService
EmailService
DI (exemplo)
class Aplicacao{Impressora impressora;Email email;void main(String[] args){
impressora = new Impressora(a, b, ?, ?); email = new Email(?, #, %, …);
impressora.imprime(x); email.envia(x);}
DI (exemplo)
class Aplicacao{@Inject Impressora impressora;@Inject Email email;
main(){impressora.imprime(x);email.envia(x);
}
DI - Container
Container
impressora
@Inject
retorna objeto
DI - Tempo de Vida
“Quanto tempo” vive um objeto no container?● Sempre é criado um novo;● Enquanto existe uma criação no banco;● Durante toda a aplicação;● Enquanto meu personagem está no mesmo
cenário;
DI - Exemplos
● O CDI é a especificação de DI de java definida pelas JSR-299 e JSR-330
Implementação Foco Limitações
Spring Framework Web com DI
● Não implementa totalmente o CDI● Containers de Aplicação não o
suportam nativamente● Pode ser muita coisa para quem só
deseja usar DI
Guice Somente DI ● Containers de Aplicação não o suportam
● Pode ser pouca coisa se você quer algo além de DI
Weld Implementação de referência CDI
● Quase ninguém usa
JSF, Spring e Hibernate
O que é JSF?
Framework stateful e orientado a componentes para camadas view e controller
de aplicações web
Vantagens/Desvantagens
● Poderoso● Flexível● Abstração das
tecnologias web● Facilidade em criar
ferramentas● Biblioteca de
componentes● Suporta acessibilidade,
internalização e multilinguística
● Padrão definido na industria
● Complexo e as vezes desnecessário
● Padrão diferente dos frameworks por ação (Rails, Struts, …)
● Não aproveita REST do HTTP
● Somente a versão 1.2 foi estável.
● Por ser stateful, é mais lento e consome mais memória
Des-mytifying Java ServeFaces - Ed Burns
Vantagens/Desvantagens
● “Simula” uma aplicação desktop, onde existe estado da View
● Componentes prontos. Se não há necessidade de customização. O desenvolvimento é acelerado
● Pode ter problemas de desempenho ao manter o estado da View
● Dificuldade de customização de componentes
Arquitetura JSF
FacesServlet
Front-Controller
Manager Beans(Controllers)
XHTML/Facelets(Views)
Fases JSFRestore
View
Apply Request Values
Process Validations
Update Model Values
Invoke Application
Render Response
Managed Bean
LoginController
String nome;String senha;
public void login(String nome, String senha);
Facelets
Escopo
Req
uest
Sco
pe
Ses
sion
Sco
pe
App
licat
ionS
cope
Vie
wS
cope
O que é Spring?
Spring
“Spring Framework is a Java platform that provides comprehensive infrastructure support for developing Java applications. Spring handles the infrastructure so you can focus on your application.”
http://docs.spring.io/spring/docs/3.0.x/reference/overview.html
Spring
O que usamos?● DI● Controlar Transações e Wrapper do
Hibernate
Spring - Bean
Bean no Spring é um POJO que é carregado no contexto de aplicação do Spring (container DI) e terá seu ciclo de vida gerenciado de acordo com um scopo determinado
● singleton – Return a single bean instance per Spring IoC container● prototype – Return a new bean instance each time when requested● request – Return a single bean instance per HTTP request. *● session – Return a single bean instance per HTTP session. *● globalSession – Return a single bean instance per global HTTP session. *
Spring - Transaction
O Spring abstrai o conceito de transação permitindo definir métodos transacionais com a anotação @Transactional
@Transactionalpublic void doSomething(){…}
HIbernate
Primeiro ORM em java e o mais usado atualmente
Hibernate@Entity(name = "conta")public class Conta implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id;
@Column private String nome; //GETTER E SETTERS}
Hibernate
obtemContas(){Session s = getSessionFactory().
getCurrentSession();
return s.createQuery("FROM pessoa").list();
}
Obrigado!Dúvidas?
Marcos Cô[email protected]