SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Sistemas WEB em Java
utilizando as tecnologias
Hibernate, JSF, Facelets e
        Richfaces
     Rogério Napoleão Júnior
      rogerionj@gmail.com
            @rogerionj
O que estaremos
            utilizando?
• Eclipse JEE

• Tomcat 7.0

• MySQL

• Importar projeto modelo para o Eclipse
Facelets
• Framework de código aberto

• Feito especificamente para o JSF

• Norteado por 3 ideias centrais:
   o   Integração com JSF
   o   Templates
   o   Composições de Componentes
Facelets - Características
• Disponibiliza um novo compilador de páginas
  baseado em XHTML

• Realiza a criação da árvore de componentes
  das telas JSF

• Criação de templates de tela JSF e reuso
  (herança) de telas

• Facelets é de 30% a 50% mais rápido que JSP
Facelets
Facelets
Configuração
• Importe o arquivo facelets.jar para dentro da pasta
  lib da aplicação

• Dentro do arquivo faces-config.xml inclua o trecho
  a seguir:
<application>
   <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
Configuração
• No arquivo web.xml adicionar:
<context-param>
   <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
   <param-value>.xhtml</param-value>
</context-param>
Funcionamento
• O Facelets oferece um ótimo mecanismo para geração
  de templates, o que torna a construção de uma
  aplicação toda com o mesmo layout, muito simples e
  rápida, além de evitar a repetição de código html

• Na criação do template, definimos os “espaços” que
  podem ser substituídos no template através da tag
  <ui:insert> e o atributo name dessa tag define o nome
  desse “espaço”.

       <div id="esquerda">
          <ui:insert name="menu" />
       </div>

       <div id="centro">
             <ui:insert name="corpo" />
       </div>
Funcionamento
• Para informarmos que estamos utilizando um template
  incluímos a tag <ui:composition> com o seu atributo
  template que define o diretório onde está o template.

  <ui:composition template="/pages/TemplateDiv.xhtml">

• Utilizando a tag <ui:define> definimos o que vai
  preencher o “espaço” do template

     <ui:define name="menu">
         <h:outputText value="Menu1:" /><br/>
         <h:outputText value="Menu2:" /><br/>
         <h:outputText value="Menu3:"/><br/>
     </ui:define>
Java Server Faces
• JavaServer Faces é um framework MVC para o
  desenvolvimento de aplicaçoes WEB.

• O JSF é atualmente considerado por muitos como
  a última palavra em termos de desenvolvimento de
  aplicações Web, resultado da experiência e
  maturidade adquiridas com o JSP/Servet.
Java Server Faces
• Permite que o desenvolvedor crie UIs (User
  Interfaces) através de um conjunto de
  componentes UIs pré-definidos;

• Fornece um conjunto de tags JSP para acessar os
  componentes;

• Reutiliza componentes da página;

• Associa os eventos do lado cliente com os
  manipuladores dos eventos do lado do servidor (os
  componentes de entrada possuem um valor local
  representando o estado no lado servidor);
Java Server Faces
• Fornece separação de funções que envolvem a
  construção de aplicações Web.

• A estrutura das aplicações permanecem a mesma.

• Continuam existindo Servlet e JSP, na mesma
  aplicação.

• Novos elementos de marcação de texto
 são presentes nas páginas.
Java Server Faces
Configurando JSF
• Importar arquivos jsf-api.jar, jsf-impl.jar e jstl.jar para
  pasta lib do projeto

• Incluir no web.xml a seguinte configuração
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
  </servlet>

   <servlet-mapping>
     <servlet-name>Faces Servlet</servlet-name>
     <url-pattern>*.jsf</url-pattern>
   </servlet-mapping>
Configurando JSF
• Criar o arquivo faces-config.xml na pasta WEB-INF
  com o seguinte conteúdo:

<faces-config>

</faces-config>

Obs.: Ajustar o build.xml para copiar este arquivo
Primeiro exemplo
• hello.jsp:

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<head>
<title>Teste JSF</title>
</head>
<body>
<f:view>
<h:outputText value="Hello"/>
</f:view>
</body>
</html>
Tag Library
     Documentation - JSF
• http://download.oracle.com/javaee/5/javaserverf
  aces/1.2/docs/tlddocs/

• Contém todas as tags disponívels do JSF.
Managed Bean
• Managed Bean é um JavaBean gerenciado pelo
  framework JSF, ou seja, ele é instanciado, e
  colocado no escopo de acordo com as
  configurações encontradas no faces-config.xml

• Um ManagedBean também é chamado de
  backing bean, pois contém os dados e os métodos
  que serão executados quando algum dos
  componentes da página JSF tiver que executar
  uma ação.
Criando um Managed
            Bean
• Criar uma classe java HelloManagedBean
   o Siga os passos


• Declaração do Managed Bean no faces-
  config.xml:

<managed-bean>
<managed-bean-name>hello</managed-bean-name>
<managed-bean-class>
br.com.projedata.projeto.view.backbean.HelloBackBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Managed Bean
• Utilizamos Taglibs e EL (Expression Language) para
  associar (fazer o binding) de um componente de UI
  com um ManagedBean.

• Ex: <h:outputText value=“#{hello.msg}”/>
Regras de navegação
•    As regras de navegação no JSF são definidas no faces-config.xml.
     Isso possibilita a partir do retorno de um método, seguir para o
     destino desejado.

•     Exemplo:
    <navigation-rule>
    <from-view-id>/hello.jsp</from-view-id>
    <navigation-case>
    <from-outcome>stringRetorno</from-outcome>
    <to-view-id>/hello2.jsp</to-view-id>
    </navigation-case>
    </navigation-rule>
Richfaces
• Framework ajax para JSF Ajax4JSF

• Funciona em qualquer conteiner Java

• Skins dinâmicos

• Decidimos que parte da pagina atualizar
  (reRender)

• Web 2.0
Configuração Richfaces
• Inserir no web.xml:
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>

<filter>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>

<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
Configuração Richfaces
• Inserir na pasta os arquivos:
   o   richfaces-api-3.3.3.Final.jar
   o   richfaces-impl-3.3.3.Final.jar
   o   richfaces-ui-3.3.3.Final.jar
   o   commons-logging.jar
   o   commons-digester.jar
   o   commons-collections.jar
   o   commons-beanutils.jar
Richfaces - TLD
• http://docs.jboss.org/richfaces/latest_3_3_X/en/tldd
  oc/

• Live demo:
   o http://livedemo.exadel.com/richfaces-demo/index.jsp
Hibernate – O que é?
• Framework opensource de mapeamento objeto-
  relacional.

• Representa um modelo de Objetos para um
  modelo Relacional.

• Possibilita a persistência através de objetos, e não
  de comandos SQL’s escritos diretamente.
Hibernate – Por que usar?
• O aumento da popularidade da orientação a
  objetos

• Uso de Banco de Dados do Modelo Relacional

• Dificuldade de utilizar os dois juntos
Hibernate - Características
• Visa diminuir a complexidade no tratamento dos dados
  provenientes de um banco;

• Torna o programa portável, deixando-o independente do
  banco de dados;

• Gera automaticamente todo o schema do banco de dados;

• Pode ser utilizado em um servidor de aplicações ou
  standalone.

• Para mapear as classes, são utilizadas configurações em
  arquivos XML ou JPA;
Hibernate -
            Funcionamento
• O Hibernate configura-se como uma camada entre a
  aplicação e o banco de dados;

• Uma classe Java é mapeada no Hibernate como uma tabela
  no banco;

• Cada instância dessa classe corresponde a um registro da
  tabela alocado na memória;
Hibernate -
Funcionamento
Hibernate - Configuração
• Criar pasta META-INF no src do projeto.
• Criar arquivo persistence.xml e colocar dentro da pasta
  META-INF:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
  <persistence-unit name="projetoPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <properties>
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost/test"/>
       <property name="hibernate.connection.driver_class"
value="com.mysql.jdbc.Driver"/>
       <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
       <property name="hibernate.connection.password" value=""/>
       <property name="hibernate.connection.username" value="root"/>
       <property name="hibernate.hbm2ddl.auto" value="update"/>
       <property name="hibernate.show_sql" value="true"/>
    </properties>
  </persistence-unit>
</persistence>
Hibernate - Configuração
• Adicionar as libs a seguir na pasta lib:
   o   ejb3-persistence.jar
   o   hibernate-entitymanager.jar
   o   hibernate-annotations.jar
   o   hibernate-commons-annotations.jar
   o   hibernate-core.jar
   o   hibernate-validator.jar
   o   dom4j.jar
   o   slf4j-api-1.5.6.jar
   o   slf4j-log4j12-1.5.6.jar
   o   log4j.jar
   o   javassist.jar
   o   jboss-javaee.jar
   o   antlr.jar
Hibernate com Anotações
• Hibernate precisa de metadados para transformar
  de uma representação para outra.

• Sem necessidades de mapeamento XML, apenas
  com anotações

• As anotações são antecedidas por um arroba(@)
Algumas anotações
• @Entity – deve ser posto em uma classe de
  entidade

• @Table – dados da tabela

• @Id – Identificador

• @GeneratedValue – Gerador de valor da chave
  primaria

• @Column – transforma um atributo do objeto em
  campos da tabela
Relacionamentos
• @OneToOne – um para um

• @OneToMany – um para muitos

• @ManyToMany – muitos para muitos

• @JoinColumn – coluna que recebera os dados de
  outra tabela

• @JoinTable – tabela intermediaria do
  relacionamento
Exemplo
• Mapear UsuarioBean
•
    Operações com Hibernate
        EntityManagerProvider – Fornece a conexão para a transação da
        operação através do Hibernate:

    public class EntityManagerProvider {

             private static EntityManagerFactory emf;

             private EntityManagerProvider(){

             }

             public static EntityManagerFactory getEntityManagerFactory(){

             if(emf == null){
                       emf = Persistence.createEntityManagerFactory("projetoPU");
             }
             return emf;
             }
    }
Operações com Hibernate
•       Exemplo de execução de transação:

    public static EntityManager em;

    public void inserirUsuario(UsuarioBean usuario){

    em =
    EntityManagerProvider.getEntityManagerFactory().createEntityManager();

    try{
                em.getTransaction().begin();
                em.persist(usuario);
                em.getTransaction().commit();
    }finally{
                em.close();
    }
    }
HQL
• Hibernate Query Language

• Totalmente orientada a objetos

• Possui paradigmas de herança, polimorfismo e
  encapsulamento.

• O HQL é bastante similar ao SQL, porém ao invés
  de usar tabelas ele usa as classes de entidades.
HQL
• Consultas podem ser tanto em SQL como em HQL

• Exemplo:
  o “from UsuarioBean where nome = “Rogério””

  o Onde o nome é o nome do atributo da entidade e não o nome da
    coluna!
Relacionamentos - Lazy e
          Eager
• Lazy – Não carrega os objetos do relacionamento

• Eager – Carrega os objetos do relacionamento da
  classe

• Qual pode ser o impacto disto?
Class genérica de
          persistência
• Criar classe genérica de exemplo

• Pode ser empacotada em um jar, e ser utilizada
  como framework.
Perguntas?
• Email: rogerionj@gmail.com

• Twitter: @rogerionj

• Linkedin: http://br.linkedin.com/in/rogerionapoleao

Weitere ähnliche Inhalte

Was ist angesagt?

Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com PrimefacesFabio Noth
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenLeandro Costa
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...Professor Samuel Ribeiro
 
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...Professor Samuel Ribeiro
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao GeralOscar
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaAna Albert
 
Introdução ao JavaServer Faces
Introdução ao JavaServer FacesIntrodução ao JavaServer Faces
Introdução ao JavaServer FacesWillian Watanabe
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Anderson Araújo
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!Diego Santos
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 

Was ist angesagt? (20)

JSF - JavaServer Faces
JSF - JavaServer FacesJSF - JavaServer Faces
JSF - JavaServer Faces
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
JSF com Primefaces
JSF com PrimefacesJSF com Primefaces
JSF com Primefaces
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
 
Jsf 2 slideshare
Jsf 2 slideshareJsf 2 slideshare
Jsf 2 slideshare
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...Introdução à programação para web com Java -  Módulo 03: Conceitos básicos de...
Introdução à programação para web com Java - Módulo 03: Conceitos básicos de...
 
Revisao Geral
Revisao GeralRevisao Geral
Revisao Geral
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
 
Jsf
JsfJsf
Jsf
 
Introdução ao JavaServer Faces
Introdução ao JavaServer FacesIntrodução ao JavaServer Faces
Introdução ao JavaServer Faces
 
Como escolher o Framework Java para web?
Como escolher o Framework Java para web?Como escolher o Framework Java para web?
Como escolher o Framework Java para web?
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 

Ähnlich wie TechDay - Sistemas WEB em Java - Rogério N. Jr.

Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6danielfcampos
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Facesbielgott
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheirasLambda 3
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Minicurso Java Server Faces
Minicurso Java Server FacesMinicurso Java Server Faces
Minicurso Java Server FacesJoão Longo
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique Gogó
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesApache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesCI&T
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!Bruno Borges
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010Eder Magalhães
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSFDalton Valadares
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 

Ähnlich wie TechDay - Sistemas WEB em Java - Rogério N. Jr. (20)

Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6Uma abordagem ao Java EE 6
Uma abordagem ao Java EE 6
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Faces
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Minicurso Java Server Faces
Minicurso Java Server FacesMinicurso Java Server Faces
Minicurso Java Server Faces
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesApache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentes
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!
 
JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010JSF2 ScrumToys SestInfo 2010
JSF2 ScrumToys SestInfo 2010
 
Apache Struts
Apache StrutsApache Struts
Apache Struts
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSF
 
Palestra
PalestraPalestra
Palestra
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 

Kürzlich hochgeladen

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Kürzlich hochgeladen (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

TechDay - Sistemas WEB em Java - Rogério N. Jr.

  • 1. Sistemas WEB em Java utilizando as tecnologias Hibernate, JSF, Facelets e Richfaces Rogério Napoleão Júnior rogerionj@gmail.com @rogerionj
  • 2. O que estaremos utilizando? • Eclipse JEE • Tomcat 7.0 • MySQL • Importar projeto modelo para o Eclipse
  • 3. Facelets • Framework de código aberto • Feito especificamente para o JSF • Norteado por 3 ideias centrais: o Integração com JSF o Templates o Composições de Componentes
  • 4. Facelets - Características • Disponibiliza um novo compilador de páginas baseado em XHTML • Realiza a criação da árvore de componentes das telas JSF • Criação de templates de tela JSF e reuso (herança) de telas • Facelets é de 30% a 50% mais rápido que JSP
  • 7. Configuração • Importe o arquivo facelets.jar para dentro da pasta lib da aplicação • Dentro do arquivo faces-config.xml inclua o trecho a seguir: <application> <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> </application>
  • 8. Configuração • No arquivo web.xml adicionar: <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param>
  • 9. Funcionamento • O Facelets oferece um ótimo mecanismo para geração de templates, o que torna a construção de uma aplicação toda com o mesmo layout, muito simples e rápida, além de evitar a repetição de código html • Na criação do template, definimos os “espaços” que podem ser substituídos no template através da tag <ui:insert> e o atributo name dessa tag define o nome desse “espaço”. <div id="esquerda"> <ui:insert name="menu" /> </div> <div id="centro"> <ui:insert name="corpo" /> </div>
  • 10. Funcionamento • Para informarmos que estamos utilizando um template incluímos a tag <ui:composition> com o seu atributo template que define o diretório onde está o template. <ui:composition template="/pages/TemplateDiv.xhtml"> • Utilizando a tag <ui:define> definimos o que vai preencher o “espaço” do template <ui:define name="menu"> <h:outputText value="Menu1:" /><br/> <h:outputText value="Menu2:" /><br/> <h:outputText value="Menu3:"/><br/> </ui:define>
  • 11. Java Server Faces • JavaServer Faces é um framework MVC para o desenvolvimento de aplicaçoes WEB. • O JSF é atualmente considerado por muitos como a última palavra em termos de desenvolvimento de aplicações Web, resultado da experiência e maturidade adquiridas com o JSP/Servet.
  • 12. Java Server Faces • Permite que o desenvolvedor crie UIs (User Interfaces) através de um conjunto de componentes UIs pré-definidos; • Fornece um conjunto de tags JSP para acessar os componentes; • Reutiliza componentes da página; • Associa os eventos do lado cliente com os manipuladores dos eventos do lado do servidor (os componentes de entrada possuem um valor local representando o estado no lado servidor);
  • 13. Java Server Faces • Fornece separação de funções que envolvem a construção de aplicações Web. • A estrutura das aplicações permanecem a mesma. • Continuam existindo Servlet e JSP, na mesma aplicação. • Novos elementos de marcação de texto são presentes nas páginas.
  • 15. Configurando JSF • Importar arquivos jsf-api.jar, jsf-impl.jar e jstl.jar para pasta lib do projeto • Incluir no web.xml a seguinte configuração <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>
  • 16. Configurando JSF • Criar o arquivo faces-config.xml na pasta WEB-INF com o seguinte conteúdo: <faces-config> </faces-config> Obs.: Ajustar o build.xml para copiar este arquivo
  • 17. Primeiro exemplo • hello.jsp: <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%> <%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <html> <head> <title>Teste JSF</title> </head> <body> <f:view> <h:outputText value="Hello"/> </f:view> </body> </html>
  • 18. Tag Library Documentation - JSF • http://download.oracle.com/javaee/5/javaserverf aces/1.2/docs/tlddocs/ • Contém todas as tags disponívels do JSF.
  • 19. Managed Bean • Managed Bean é um JavaBean gerenciado pelo framework JSF, ou seja, ele é instanciado, e colocado no escopo de acordo com as configurações encontradas no faces-config.xml • Um ManagedBean também é chamado de backing bean, pois contém os dados e os métodos que serão executados quando algum dos componentes da página JSF tiver que executar uma ação.
  • 20. Criando um Managed Bean • Criar uma classe java HelloManagedBean o Siga os passos • Declaração do Managed Bean no faces- config.xml: <managed-bean> <managed-bean-name>hello</managed-bean-name> <managed-bean-class> br.com.projedata.projeto.view.backbean.HelloBackBean </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
  • 21. Managed Bean • Utilizamos Taglibs e EL (Expression Language) para associar (fazer o binding) de um componente de UI com um ManagedBean. • Ex: <h:outputText value=“#{hello.msg}”/>
  • 22. Regras de navegação • As regras de navegação no JSF são definidas no faces-config.xml. Isso possibilita a partir do retorno de um método, seguir para o destino desejado. • Exemplo: <navigation-rule> <from-view-id>/hello.jsp</from-view-id> <navigation-case> <from-outcome>stringRetorno</from-outcome> <to-view-id>/hello2.jsp</to-view-id> </navigation-case> </navigation-rule>
  • 23. Richfaces • Framework ajax para JSF Ajax4JSF • Funciona em qualquer conteiner Java • Skins dinâmicos • Decidimos que parte da pagina atualizar (reRender) • Web 2.0
  • 24. Configuração Richfaces • Inserir no web.xml: <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <filter> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>
  • 25. Configuração Richfaces • Inserir na pasta os arquivos: o richfaces-api-3.3.3.Final.jar o richfaces-impl-3.3.3.Final.jar o richfaces-ui-3.3.3.Final.jar o commons-logging.jar o commons-digester.jar o commons-collections.jar o commons-beanutils.jar
  • 26. Richfaces - TLD • http://docs.jboss.org/richfaces/latest_3_3_X/en/tldd oc/ • Live demo: o http://livedemo.exadel.com/richfaces-demo/index.jsp
  • 27. Hibernate – O que é? • Framework opensource de mapeamento objeto- relacional. • Representa um modelo de Objetos para um modelo Relacional. • Possibilita a persistência através de objetos, e não de comandos SQL’s escritos diretamente.
  • 28. Hibernate – Por que usar? • O aumento da popularidade da orientação a objetos • Uso de Banco de Dados do Modelo Relacional • Dificuldade de utilizar os dois juntos
  • 29. Hibernate - Características • Visa diminuir a complexidade no tratamento dos dados provenientes de um banco; • Torna o programa portável, deixando-o independente do banco de dados; • Gera automaticamente todo o schema do banco de dados; • Pode ser utilizado em um servidor de aplicações ou standalone. • Para mapear as classes, são utilizadas configurações em arquivos XML ou JPA;
  • 30. Hibernate - Funcionamento • O Hibernate configura-se como uma camada entre a aplicação e o banco de dados; • Uma classe Java é mapeada no Hibernate como uma tabela no banco; • Cada instância dessa classe corresponde a um registro da tabela alocado na memória;
  • 32. Hibernate - Configuração • Criar pasta META-INF no src do projeto. • Criar arquivo persistence.xml e colocar dentro da pasta META-INF: <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="projetoPU" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.connection.url" value="jdbc:mysql://localhost/test"/> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.connection.password" value=""/> <property name="hibernate.connection.username" value="root"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.show_sql" value="true"/> </properties> </persistence-unit> </persistence>
  • 33. Hibernate - Configuração • Adicionar as libs a seguir na pasta lib: o ejb3-persistence.jar o hibernate-entitymanager.jar o hibernate-annotations.jar o hibernate-commons-annotations.jar o hibernate-core.jar o hibernate-validator.jar o dom4j.jar o slf4j-api-1.5.6.jar o slf4j-log4j12-1.5.6.jar o log4j.jar o javassist.jar o jboss-javaee.jar o antlr.jar
  • 34. Hibernate com Anotações • Hibernate precisa de metadados para transformar de uma representação para outra. • Sem necessidades de mapeamento XML, apenas com anotações • As anotações são antecedidas por um arroba(@)
  • 35. Algumas anotações • @Entity – deve ser posto em uma classe de entidade • @Table – dados da tabela • @Id – Identificador • @GeneratedValue – Gerador de valor da chave primaria • @Column – transforma um atributo do objeto em campos da tabela
  • 36. Relacionamentos • @OneToOne – um para um • @OneToMany – um para muitos • @ManyToMany – muitos para muitos • @JoinColumn – coluna que recebera os dados de outra tabela • @JoinTable – tabela intermediaria do relacionamento
  • 38. Operações com Hibernate EntityManagerProvider – Fornece a conexão para a transação da operação através do Hibernate: public class EntityManagerProvider { private static EntityManagerFactory emf; private EntityManagerProvider(){ } public static EntityManagerFactory getEntityManagerFactory(){ if(emf == null){ emf = Persistence.createEntityManagerFactory("projetoPU"); } return emf; } }
  • 39. Operações com Hibernate • Exemplo de execução de transação: public static EntityManager em; public void inserirUsuario(UsuarioBean usuario){ em = EntityManagerProvider.getEntityManagerFactory().createEntityManager(); try{ em.getTransaction().begin(); em.persist(usuario); em.getTransaction().commit(); }finally{ em.close(); } }
  • 40. HQL • Hibernate Query Language • Totalmente orientada a objetos • Possui paradigmas de herança, polimorfismo e encapsulamento. • O HQL é bastante similar ao SQL, porém ao invés de usar tabelas ele usa as classes de entidades.
  • 41. HQL • Consultas podem ser tanto em SQL como em HQL • Exemplo: o “from UsuarioBean where nome = “Rogério”” o Onde o nome é o nome do atributo da entidade e não o nome da coluna!
  • 42. Relacionamentos - Lazy e Eager • Lazy – Não carrega os objetos do relacionamento • Eager – Carrega os objetos do relacionamento da classe • Qual pode ser o impacto disto?
  • 43. Class genérica de persistência • Criar classe genérica de exemplo • Pode ser empacotada em um jar, e ser utilizada como framework.
  • 44. Perguntas? • Email: rogerionj@gmail.com • Twitter: @rogerionj • Linkedin: http://br.linkedin.com/in/rogerionapoleao