Vous êtes sur la page 1sur 49

Linguagem de Programao Orientada

a Objetos para Web


Profa.: Alessandra Gomes
E-mail: alegomesbr@gmail.com

IFB Tcnico em Informtica 3 Mdulo [2 semestre - 2014]

Agenda [Aula 13]


CRUD com JSF e JPA/Hibernate

JPA/Hibernate

Definio do Banco de Dados para o CRUD

Preparao do Ambiente para a Programao


Configurao do Hibernate
Incluso do driver JDBC
Criao da unidade de persistncia
Implementao das etapas do CRUD

Cadastro
Apresentao dos Dados
Excluso
Alterao

Objetivo
Construir um CRUD (Create, Read, Update, Delete)
simples utilizando os frameworks JSF e JPA/Hibernate
no ambiente NetBeans.
Neste primeiro exemplo no adotaremos o padro MVC

JPA/Hibernate

JPA Java Persistence API (API de Persistncia do


Java)
Define uma forma de implementar o mapeamento
objeto-relacional, tambm conhecidos como beans de
entidade.
Hibernate Implementao de JPA baseada em XML
e Anotaes
Outras implementaes do JPA: OpenJPA, Kundera,
EclipseLink, etc.

JDBC

JDBC Java Database Connectivity

API de comunicao com banco de dados relacional

Cada banco de dados possui a sua API JDBC

Unidade de Persistncia

Configurar as informaes referentes ao provedor do


JPA (Hibernate) e ao banco de dados,
Identificar as classes que sero mapeadas como
entidades do banco de dados (tabelas).
Representada pelo arquivo persistence.xml

CRUD Banco de Dados


Construo do Banco de Dados
1. Crie um banco de dados chamado bd_cliente
2. Crie uma tabela chamada cliente
3. Crie os campos id_cliente do tipo serial e
nome_cliente do tipo character varying 100
4. Defina id_cliente como a chave primria da tabela
cliente

CRUD Sistema Web


Construo do Sistema Web
1. Crie um novo projeto Web padro.
2. Na ltima tela, selecione os frameworks JSF e
Hibernate
3. O banco de dados dever ser previamente criado para
ser possvel estabelecer a comunicao do Hibernate
com ele.

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web

Insero do drive JDBC


PostgreSQL

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web

Criao da unidade de
persistncia

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web


Construo do Sistema Web

CRUD Sistema Web


Construo do Sistema Web
Faa as alteraes destacadas na figura

CRUD Sistema Web

Incio da programao do
CRUD: Cadastro

CRUD Sistema Web


Construo do Cdigo CRUD
1. Crie um pacote chamado com.ifb.beans
2. Crie a classe Cliente.java
3. Crie a classe ClienteBean.java

CRUD Sistema Web


//Cliente.java
@Entity
@Table(name = "cliente")
public class Cliente implements Serializable {
@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)
private int id_cliente;
private String nome_cliente;
//getter's and setter's
}

CRUD Sistema Web


//ClienteBean.java
@ManagedBean
@SessionScoped
public class ClienteBean {
private Cliente cliente = new Cliente();
//gerar getter's and setter's

CRUD Sistema Web


public void salvar() throws IOException{
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("default");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(cliente);
em.getTransaction().commit();
em.close();
FacesContext.getCurrentInstance().
getExternalContext().redirect("sucesso.xhtml");
}
}

CRUD Sistema Web


Construo do Front-End CRUD
1. Crie um arquivo chamado cadastro.xhtml
2. Crie um arquivo chamado sucesso.xhtml

CRUD Sistema Web


//index.xhtml
<h:body>
<h2>Exemplo Simples de CRUD com JSF e Hibernate</h2>
<h:link value="Cadastro" outcome="cadastro.xhtml"/>
</h:body>

CRUD Sistema Web


//cadastro.xhtml
<h:body>
<h:form>
<p> ID Cliente </p>
<h:inputText value="#{clienteBean.cliente.id_cliente}"
id="txID" />
<p> Nome Cliente </p>
<h:inputText value="#{clienteBean.cliente.nome_cliente}"
id="txNome" />
<h:commandButton value="Cadastrar"
action="#{clienteBean.salvar}"/>
</h:form>
</h:body>

CRUD Sistema Web


//sucesso.xhtml
<h:body>
<p>Cadastro Realizado com Sucesso!</p>
<h:link value="Voltar" outcome="index.xhtml"/>
</h:body>

CRUD Sistema Web


//alterar o arquivo persistence.xml
1. Alterar a tag <persistence-unit> para:
<persistence-unit name="default" transactiontype="RESOURCE_LOCAL">
2. Apagar a tag <excluded-unlisted-classes>:
<exclude-unlisted-classes>false</exclude-unlistedclasses>

CRUD Sistema Web


//alterar o arquivo persistence.xml
3. Adicionar a tag <class> entre a tag <provider> e a tag
<properties>
<provider>org.hibernate.ejb.HibernatePersistence</prov
ider>
<class>com.ifb.beans.Cliente</class>
<properties>

CRUD Sistema Web

Incio da programao do
CRUD: Listar Cadastrados

CRUD Sistema Web


Alterao do Cdigo CRUD e Front-End
1. Edite a classe ClienteBean.java
2. Crie o arquivo listar.xhtml
3. Edite o arquivo index.html

CRUD Sistema Web


//ClienteBean.java Acrescentar os cdigos abaixo
public class ClienteBean {
private List<Cliente> listaClientes;
public List<Cliente> getListaClientes() {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("default");
EntityManager em = emf.createEntityManager();
Query q = em.createNativeQuery("select * from
tblcliente", Cliente.class);
this.listaClientes = q.getResultList();
em.close();
return clientes;
}}

CRUD Sistema Web


//ClienteBean.java Acrescentar os cdigos abaixo
public void setListaClientes(List<Cliente>
listaClientes) {
this.listaClientes = listaClientes;
}
}

CRUD Sistema Web


//listar.xhtml
<h:form>
<h:dataTable value="#{clienteBean.listaClientes}"
var="cliente" border="1">
<h:column>
<f:facet name="header"> ID </f:facet>
#{cliente.id_cliente}
</h:column>
<h:column>
<f:facet name="header"> Nome </f:facet>
#{cliente.nome_cliente}
</h:column>
</h:dataTable>
</h:form>

CRUD Sistema Web


//index.xhtml
<h:body>
<h2>Exemplo Simples de CRUD com JSF e Hibernate</h2>
<h:link value="Cadastro" outcome="cadastro.xhtml"/>
<h:link value="Listagem" outcome="listar.xhtml"/>
</h:body>

CRUD Sistema Web

Incio da programao do
CRUD: Excluir Cadastrados

CRUD Sistema Web


Alterao do Cdigo CRUD e Front-End
1. Edite a classe ClienteBean.java
2. Edite o arquivo listar.xhtml

CRUD Sistema Web


//ClienteBean.java Acrescentar os cdigos abaixo
public void excluir(Cliente cliente){
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("default");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
cliente = em.merge(cliente);
em.remove(cliente);
tx.commit();
em.close();
}
}

CRUD Sistema Web


//listar.xhtml Acrescentar no dataTable
<h:dataTable value="#{clienteBean.clientes}"
var="cliente" border="1">
<h:column>
<f:facet name="header"> Aes </f:facet>
<h:commandLink value="Excluir"
action="#{clienteBean.excluir(cliente)}" />
</h:column>
</h:dataTable>

CRUD Sistema Web

Incio da programao do
CRUD: Alterar Cadastrados

CRUD Sistema Web


Alterao do Cdigo CRUD e Front-End
1. Edite a classe ClienteBean.java
2. Edite o arquivo listar.xhtml
3. Crie o arquivo editar.xhtml

CRUD Sistema Web


//ClienteBean.java Acrescentar os cdigos abaixo
public void atualizar() throws IOException {
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("default");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Cliente clienteDet =
em.find(Cliente.class, cliente.getId_cliente());
em.detach(clienteDet);
clienteDet.setNome_cliente
(cliente.getNome_cliente());
em.merge(clienteDet);

CRUD Sistema Web


//ClienteBean.java Acrescentar os cdigos abaixo (continuao)
em.getTransaction().commit();
em.close();
FacesContext.getCurrentInstance().
getExternalContext().redirect("listar.xhtml");
}

CRUD Sistema Web


//listar.xhtml Acrescentar no dataTable
<h:dataTable value="#{clienteBean.clientes}"
var="cliente" border="1">
<h:column>
<f:facet name="header"> Aes </f:facet>
<h:commandLink value="Excluir"
action="#{clienteBean.excluir(cliente)}" />
<h:commandLink value="Editar" action="editar">
<f:setPropertyActionListener value="#{cliente}"
target="#{clienteBean.cliente}"/>
</h:commandLink>
</h:column>
</h:dataTable>

CRUD Sistema Web


//editar.xhtml
<h:form>
<p> ID do Cliente </p>
<h:inputText
value="#{clienteBean.cliente.id_cliente}" id="txID" />
<p> Nome do Cliente </p>
<h:inputText
value="#{clienteBean.cliente.nome_cliente}"
id="txNome" />
<h:commandButton value="Atualizar"
action="#{clienteBean.atualizar}" />
</h:form>

Dvidas?

Vous aimerez peut-être aussi