java web

32
Java WEB no STI Funcionário: Marcos Côrtes E-mail: [email protected]

Upload: marcosvpcortes

Post on 03-Aug-2015

46 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Java web

Java WEB no STI

Funcionário: Marcos CôrtesE-mail: [email protected]

Page 2: Java web

Agenda

● Apresentação● Conhecimentos Básicos● Frameworks

○ JSF○ Spring○ Hibernate

Page 3: Java web

Aplicações Java STI

CPD

Page 4: Java web

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

Page 5: Java web

ArquiteturaView ModelController DB

Page 6: Java web

Conceitos BásicosIOC / IC

FrameworkEscopo

Page 7: Java web

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(){ …. }}

Page 8: Java web

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;}

Page 9: Java web

DI (exemplo)

Aplicação

ImpressaoService

EmailService

Page 10: Java web

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);}

Page 11: Java web

DI (exemplo)

class Aplicacao{@Inject Impressora impressora;@Inject Email email;

main(){impressora.imprime(x);email.envia(x);

}

Page 12: Java web

DI - Container

Container

impressora

email

@Inject

retorna objeto

Page 13: Java web

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;

Page 14: Java web

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

Page 15: Java web

JSF, Spring e Hibernate

Page 16: Java web

O que é JSF?

Framework stateful e orientado a componentes para camadas view e controller

de aplicações web

Page 17: Java 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

Page 18: Java web

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

Page 19: Java web

Arquitetura JSF

FacesServlet

Front-Controller

Manager Beans(Controllers)

XHTML/Facelets(Views)

Page 20: Java web

Fases JSFRestore

View

Apply Request Values

Process Validations

Update Model Values

Invoke Application

Render Response

Page 21: Java web

Managed Bean

LoginController

String nome;String senha;

public void login(String nome, String senha);

Page 22: Java web

Facelets

Page 23: Java web

Escopo

Req

uest

Sco

pe

Ses

sion

Sco

pe

App

licat

ionS

cope

Vie

wS

cope

Page 24: Java web

O que é Spring?

Page 25: Java web

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

Page 26: Java web

Spring

O que usamos?● DI● Controlar Transações e Wrapper do

Hibernate

Page 27: Java web

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. *

Page 28: Java web

Spring - Transaction

O Spring abstrai o conceito de transação permitindo definir métodos transacionais com a anotação @Transactional

@Transactionalpublic void doSomething(){…}

Page 29: Java web

HIbernate

Primeiro ORM em java e o mais usado atualmente

Page 30: Java web

Hibernate@Entity(name = "conta")public class Conta implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id;

@Column private String nome; //GETTER E SETTERS}

Page 31: Java web

Hibernate

obtemContas(){Session s = getSessionFactory().

getCurrentSession();

return s.createQuery("FROM pessoa").list();

}

Page 32: Java web

Obrigado!Dúvidas?

Marcos Cô[email protected]