Documente Academic
Documente Profesional
Documente Cultură
Uma aplicao Java EE da teoria a pratica por Rodrigo Urubatan Ferreira Jardim
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
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
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.
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.
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.
Tipos primitivos do java l Tipos wraper l Enums l Classes persistentes l Relacionamentos entre classes l Componentes l Colees
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.
l
l
l
l
l l l
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
@Pattern(regex="regex p", flag=) l @Range(min=, max=) l @Size(min=, max=) l @AssertFalse l @AssertTrue l @Valid
Lets Play
Configurao
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
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
Lets Play
Consultas
l Possibilidades
l HQL
l SQL
para consultas
Nativo l Criteria
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
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.
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.
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
Lets Play
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.
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 ...
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
Extendendo o framework
l 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
Lets Play
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?
Lets Play
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.
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.
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.
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
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
WYSIWYG
l Java
existe uma API de templates padro para o JSF l Facelets vem ao socorro!
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
Lets Play
Spring-Annotation
l Menos
XML l Melhor integrao com JSF l Melhor Integrao com o Hibernate l Menos pontos de manuteno na aplicao
Lets Play
Executando a aplicao!
l Servidor
Duvidas
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