0% acharam este documento útil (0 voto)
108 visualizações54 páginas

Desenvolvimento Java EE Usando JSF - Spring Framework e Hibernate

O documento apresenta uma palestra sobre desenvolvimento Java Enterprise Edition utilizando as tecnologias JSF, Spring Framework e Hibernate. O palestrante Rodrigo Urubatan é especialista nestas tecnologias e irá abordar tópicos como mapeamento objeto-relacional com Hibernate, configuração, consultas, validação e integração com JSF e Spring Framework.

Enviado por

Fabiano Góes
Direitos autorais
© Attribution Non-Commercial (BY-NC)
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
108 visualizações54 páginas

Desenvolvimento Java EE Usando JSF - Spring Framework e Hibernate

O documento apresenta uma palestra sobre desenvolvimento Java Enterprise Edition utilizando as tecnologias JSF, Spring Framework e Hibernate. O palestrante Rodrigo Urubatan é especialista nestas tecnologias e irá abordar tópicos como mapeamento objeto-relacional com Hibernate, configuração, consultas, validação e integração com JSF e Spring Framework.

Enviado por

Fabiano Góes
Direitos autorais
© Attribution Non-Commercial (BY-NC)
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda [email protected] | 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 [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Lets Play

Tech Office Solues em Tecnologia da Informao Ltda [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Duvidas

Tech Office Solues em Tecnologia da Informao Ltda [email protected] | 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 [email protected] | www.techoffice.com.br | http://blog.urubatan.com.br

Você também pode gostar