Sunteți pe pagina 1din 54

Desenvolvimento Java Enterprise Edition usando JSF + Spring Framework e Hibernate

Uma aplicao Java EE da teoria a pratica por Rodrigo Urubatan Ferreira Jardim

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Sobre o Palestrante

Rodrigo Urubatan - SCJP 1.4 e SCWCD Trabalha com arquitetura de sistemas J2EE e treinamento

Ja desenvolveu projetos utilizando as linguagens Delphi, C++, PHP, ASP, C o l F usi n , L e a th e r, A ssem b l P e rl d o y, , Trabalha com Java/J2EE a 4 anos e com desenvolvimento de sistemas a 9 anos
Atualmente colabora com pequenas correes a alguns projetos Open Source como o GUJ2, Lomboz e Veloeclipse e faz parte da coordenao do RSJUG J ministrou palestras em universidades (UCS, ULBRA, UNISC) e diversos eventos (Just Java, FISL, Seminrio do RSJUG, Maratona 4 Java, Infosul) tutoriais para o RSJUG e ja teve um artigo publicado na revista Mundo Java Atualmente trabalha como consultor na AdvancedIT, como gerente de tecnologia e qualidade na Tech Office IT, e ministra cursos e alguns pequenos projetos pela USI Informtica o principal desenvolvedor do projeto Spring-Annotation

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Agenda
l

Java 5 l Hibernate
l l l

Mapeamento Objeto Relacional Configurao Consultas IoC/DI Recursos do Framework Porque usar Conceitos Bsicos Recursos

Spring Framework
l l

JSF
l l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hibernate
Hibernate servio de persistencia e consulta objeto/relacional poderoso e de alta performance. Hibernate permite o desenvolvimento de classes persistentes utilizando um idioma orientado a objetos incluindo associaes, herana, polimorfismo, composio, e colees.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hibernate
Hibernate permite a escrita de consultas no seu idioma proprio e portvel (HQL), bem como em SQL nativo, ou com uma API Orientada a objetos de Criterios e Exemplos.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Mapeamento Objeto Relacional


l Por

que? l Para que serve? l Como fazer? l Hands On!

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Mapeamento O/R: Por que?


Desenvolver qualquer tipo de sistemas ja no uma tarefa simples. l Precisar pensar de duas formas diferentes aumenta a complexidade. l Pensar apenas de forma relacional nos faria perder a maior parte das vantagens do Java.
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Mapeamento O/R: Para que serve?


l

Mapear os objetos que precisam ser persistentes do sistema para a forma mais popular e performatica de armazenamento de dados utilizada hoje. Permite pensar em todo o sistema na forma de objetos, e utilizar o banco de dados apenas como armazenamento de dados. No necessrio conhecer duas linguagens diferentes para escrever um sistema.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Mapeamento O/R: Como Fazer?


Criar um modelo de objetos que seja suficiente para trabalhar com os dados necessrios para a aplicao. l Tomar cuidado para realizar o mapeamento correto, seguindo os conceitos de orientao a objetos. l E vi r d e cri r o b j to s-ta b e l ta a e a
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hands On: O que pode ser mapeado


l

Tipos primitivos do java l Tipos wraper l Enums l Classes persistentes l Relacionamentos entre classes l Componentes l Colees

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hands On: Abordagens para o mapeamento


l

Anotaes
l

l l l l

Anotaes compativeis com a especificao da Java Persistence API (EJB3) Um unico lugar para saber onde as classes sero persistidas Utiliza as informaes de colees genricas Menor quantidade de meta dados para o mesmo resultado Extenses do Hibernate disponiveis onde a especificao de JPA no chegou.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hands On: Anotaes


l l l

l
l

l
l

@Entity @Id @GeneratedValue @Embedded @Embeddable @EmbeddedId @Basic @Column

l l l

l
l

l
l

@OneToMany @OneToOne @ManyToOne @ManyToMany @MapKey @MappedSupperClass Inheritance

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hands On: Enumeraes


DiscriminatorValue l FetchType l GenerationType l InheritanceType
l

CascadeType l EnumType l FlushModeType l LockModeType


l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hands On: Validao Integrada


Com as classes mapeadas at o momento no temos nenhum tipo de validao l No h campos obrigatrios exceto o ID l Isto aumenta a complexidade do resto do cdigo, obrigando o cdigo da aplicao a tratar isto explicitamente.
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hands On: Validao Integrada


l l l l

Hibernate Annotations possui uma extenso de validao Algumas das validaes so refletidas no banco de dados gerado Podem ser utilizadas independente do resto do Hibernate quando desejado Possibilidade de criar validaes costumizadas

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Hands On: Validao Integrada


l

@Length(min=, max=) l @Max(value=) l @Min(value=) l @NotNull l @Past l @Future l @Email

@Pattern(regex="regex p", flag=) l @Range(min=, max=) l @Size(min=, max=) l @AssertFalse l @AssertTrue l @Valid

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Configurao
l

O Hibernate para funcionar precisa de algumas informaes


l l l

Como se conectar ao banco de dados Qual o banco de dados que estamos utilizando Quais as classes sero persistidas Quais pacotes possuem configuraes

E possui diversas configuraes opcionais que veremos a seguir

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Configurao
l

Suporte para conexo ao banco de dados l Utilizando um datasource configurado l Utilizando um datasource fornecido programaticamente l Utilizando um datasource fornecido via JNDI l Utilizando uma conexo fornecida manualmente

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Consultas
l Possibilidades
l HQL
l SQL

para consultas

Nativo l Criteria

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Consultas: HQL
Linguagem propria do Hibernate l Similar a SQL, mas com extenses orientadas a objetos l Facilitada a navegao nos relacionamentos por meio de propriedades l Possibilita a utilizao de poucos recursos proprios do banco de dados
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Consultas: SQL Nativo


Aproveita o conhecimento ja adqirido na empresa l Possibilita a utilizao de todo o poder do banco de dados l Nos prende ao banco de dados utilizado l No utiliza todas as vantagens do mapeamento O/R
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Consultas: Criteria API


Linguagem totalmente orientada a objetos l Consultas escritas em Java l Facilidade para Query By Example l Facilidade para escrever consultas dinmicas l Evita que o programador cometa alguns tipos de erros
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Consultas: Design Pattern DAO


Oculta do resto da aplicao qual a tecnologia de acesso a dados que esta sendo utilizada. l Concentra em um unico lugar o conhecimento de como transportar um objeto de/para o banco. l Facilita o tratamento de erros do banco de dados em um unico lugar.
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Consultas: Generics
l

Podemos utilizar os generics do Java 5 para escrever um cdigo padro para acesso a dados. l A API do hibernate facilita o trabalho. l A Criteria API nos fornece os recursos necessrios para escrever cdigo parametrizavel. l Classes parametrizadas reduzem a complexidade do cdigo.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Consultas: Implementao do Dao


l

Precisa ser genrico como a interface l Precisa suportar qualquer um dos objetos que criamos l A API do Hibernate padro ja da suporte a criao, atualizao e deleo de objetos l A API de Criteria da suporte a consultas. l Precisamos ter acesso a um SessionFactory do Hibernate.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Consultas: Session
l Session

equivalente a uma conexo ao banco de dados no Hibernate l Session no ThreadSafe l Session a nossa interface basica com a API do Hibernate

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Spring Framework
l l

J2EE deveria ser mais fcil de utilizar melhor programar orientado a interfaces do que a classes. Spring reduz a complexidade de programar voltado a inerfaces a quase zero. l JavaBeans oferecem um timo meio de configurara aplicaes. l O design OO mais importante do que qualquer tecnologia, como o J2EE. l Excees checadas so utilizadas em excesso no Java. Um framework no deveria te obrigar a tratar excees, a no ser que fosse possivel se recuperar delas.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

O que o Spring Framework


l

Basicamente o Spring Framework um conjunto de componentes reutilizveis


l l l

l
l l l l

Container de IoC Framework AOP MVC Hierarquia de excees Facilidades para acesso a dados e utilizao de frameworks OR JMS JMX Scripting ...

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Inverso de Controle / Injeo de Dependencia


No inicio de 2004 Martin Fowler perguntou em u m fo ru m q u a i a sp e cto s d o co n tro l d e ste s e si m a e sta m o s i ve rte n d o e l g o d e p o i e l ste n o s e sugeriu que o nome do pattern/principio fosse a l ra d o , o u fo sse u m p o u co m a i a u to te s e xp lca ti , p a ra u m a m a i r e xp lca o d o i vo o i que o Fowler chama de Injeo de dependencias, pode ser consultada a URL http://martinfowler.com/articles/injection.html

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Bean Factory
O que e para que serve l Bean Definition l A classe para o Java Bean
l
l
l l

Inicializao por construtor Inicializao via factory method esttico Inicializao via factory method de instancia

Identificadores para o Bean (id e name) l Singleton ou no Singleton


l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Recursos avanados da BeanFactory


l

Interfaces para o ciclo de vida


l l

Inicializao/init-method Finalizao/destroy-method BeanNameAware BeanFactoryAware ApplicationContextAware BeanFactoryPostProcessor BeanPostProcessor

Sabendo quem voc


l l l

Extendendo o framework
l l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Integrao do Spring Framework com o AspectJ


l

A partir da verso 2.0 do spring, o framework AOP do spring framework esta bastante integrado ao AspectJ l Esta integrao tras basicamente dois grandes beneficios
l

Pode-se utilizar a linguagem de expresses do AspectJ para definir pointcuts e advices no Spring Pode-se injetar dependencias em aspectos do AspectJ

Uma tima demonstrao desta integrao a nova anotao @Configurable

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Em que podemos utilizar AOP?


Controle de transaes. l Logging para depurao. l Injeo de dependencias em beans que no so carregados no contexto do spring. l Segurana. l Tratamento de erros para o usurio (mas isto vamos deixar pra depois ... )
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Escrevendo a Lgica de negcio


l Por

que criar classes para regra de negcios? l O que colocar nestas classes? l Como trabalhar com elas? l Por que no utilizar direto os DAOs na classe que trata as requisies?

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Java Server Faces


A tecnologia JavaServer Faces um framework server-side de componentes para interface com o usurio para aplicaes WEB desenvolvidas utilizando a tecnologia Java. E inclui: l Um cojunto de APIs para: Representar componentes UI e gerenciar o estado deles, tratar eventos e validao de entradas, definir a navegao de pginas, e dar suporte a internacionalizao e acessibilidade. l Uma biblioteca de tags JavaServer Pages (JSP) para expressar uma interface JavaServer Faces usando uma pgina JSP.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Managed Beans
l

l l l l

Beans gerenciados so os controladores do JSF, onde o cdigo java executado, semelhante ao Code Behind do .NET Estes beans so acessiveis via a Expression Language Botes e links nas pginas podem chamar mtodos dos Managed Beans Podem ser criados eventos para alteraes na interface com o usurio dentro de um Managed Bean Um Managed Bean um Java Bean simples, sem nenhuma exigencia a mais.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Converters
l Em

uma requisio WEB tudo texto. l O JSF utiliza os converters para transformar texto no tipo de dados da propriedade do componente desejado. l A implementao padro ja vem com alguns converters implementados.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Validators
l JSF

por padro no suporta validao no lado do cliente. l A validao feita por classes java chamadas Validators. l Estes validators podem disponibilizar mensagens de erro para serem renderizadas nas pginas.

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Componentes
Os componentes JSF so a base para construo da interface com o usurio. l Existem componentes padro equivalentes a quase todas as tags HTML e diversos h e l e rs p l Existem diversas bibliotecas de componentes disponiveis comerciais e open source.
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Tags
As tags JSF so apenas um meio de expressar os componentes em uma pgina JSP. l Para cada componente, validator ou converter criado, deve-se criar tambm uma tag para poder utiliza-lo tambm em uma JSP, caso contrario este s sera acessivel via cdigo java.
l

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

WYSIWYG
l Java

Studio Creator l JDeveloper l Mos a Obra!

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Partes comuns das pginas


l No

existe uma API de templates padro para o JSF l Facelets vem ao socorro!

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Escrevendo o cdigo (MBeans)


l Mtodos

para aes de botes e links l Mtodos para eventos l Utilizando os beans ja definidos l Configurando propriedades l Alterando a UI a partir de cdigo java

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Spring-Annotation
l Menos

XML l Melhor integrao com JSF l Melhor Integrao com o Hibernate l Menos pontos de manuteno na aplicao

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Executando a aplicao!
l Servidor

de aplicaes l Banco de dados l Deploy

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Duvidas

Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br

Referencias
l http://www.springframework.org

l http://www.hibernate.org l http://myfaces.apache.org
l http://java.sun.com l http://urubatan.com.br l https://facelets.dev.java.net

l https://spring-annotation.dev.java.net l http://blog.urubatan.com.br
Tech Office Solues em Tecnologia da Informao Ltda rodrigo@techoffice.com.br | www.techoffice.com.br | http://blog.urubatan.com.br