Arquivo da categoria ‘MySQL’
Publicado por Sergio Fantin em maio 15, 2010
Neste post irei demonstrar a utilização do componente <t:selectItems>, que é componente responsável por popular os dados no componente <h:selectOneMenu>.
Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download.
Estrutura do projeto

Versões utilizadas
- Eclipse 3.5.2
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- Tomahawk 1.1.8
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- MySQL Query Browser 1.2
Leia o resto deste post »
Enviado em Framework, Hibernate, Java, JSF, JUnit, MySQL | 1 Comentário »
Publicado por Sergio Fantin em maio 15, 2010
Neste post irei demonstrar a utilização do componente <f:selectItems>, que é componente responsávelpor popular os dados no componente <h:selectOneMenu>.
Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download.
Estrutura do projeto

Versões utilizadas
- Eclipse 3.5.2
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- MySQL Query Browser 1.2
Leia o resto deste post »
Enviado em Hibernate, Java, JSF, JUnit, MySQL | 5 Comentários »
Publicado por Sergio Fantin em maio 6, 2010
Neste post irei demonstrar como criar e executar um simples CRUD utilizando Flex + Java.
A comunicação entre objetos Flex/Java acontece por um protocolo binário denominado de AMF que se encarrega de compactar e transferir os dados. Atualmente temos várias implementações que suportam o protocolo AMF, no exemplo demonstrativo utilizo o BlazeDS para fazer a comunicação Java/Flex.
No fim do post disponibilizo o projeto completo que pode ser facilmente importado e executado.
É necessário que o leitor saiba o básico de programação Web utilizando banco de dados.

Versões utilizadas
- Adobe Flex Builder 3.0 (build 3.0.2.214193)
- JDK 1.6.0_18
- Apache Tomcat 6.0.24
- BlazeDS 3.2.0.3978
- MySQL Server 5.1
- MySQL Query Browser 1.1.17
- Hibernate 3
Estrutura do Projeto
Leia o resto deste post »
Enviado em Flex, Hibernate, Java, JUnit, MySQL | 7 Comentários »
Publicado por Sergio Fantin em setembro 15, 2009
Neste post irei demonstrar a utilização do componente rich:editor que faz parte da biblioteca de componentes RichFaces.
O rich:editor é um componente usado para a criação de um editor em páginas. Seu uso é relativamente simples e o resultado é impressionante.
A aplicação consiste num cadastro de Rascunhos onde o usuário poderá cadastrar e remover seus rascunhos de uma forma prática e simples. Para gerenciar as sessões/transações do Hibernate criei um serlvet filter Open Session In View fazendo papel de um interceptador, que será executado a cada request e response.
Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download.
Estrutura do projeto

Versões utilizadas
- Eclipse 3.4.1
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- MySQL Query Browser 1.2
Códigos
Rascunho.java:
package br.com.serjaum.modelo;
@Entity
@Table(name="rascunho")
public class Rascunho implements Serializable{
private static final long serialVersionUID = -6142163109498247473L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="RASCUNHO_ID")
private Long id;
@Column(name="titulo")
private String titulo;
@Temporal(TemporalType.DATE)
@Column(name="data")
private Date data = new Date();
@Lob
@Column(name="conteudo")
private String conteudo;
...
}
Leia o resto deste post »
Enviado em Facelets, Framework, Hibernate, Java, JSF, JUnit, MySQL | 5 Comentários »
Publicado por Sergio Fantin em setembro 3, 2009
Neste post irei fazer a migração da nossa aplicação JSF completa utilizando RichFaces + Hibernate + MySQL na prática para Facelets.
Algumas das características do Facelets:
- Utilização do XHTML como camada de visão da aplicação;
- Permite a criação de componentes reutilizáveis;
- Aumenta a performance da aplicação de 30% até 50% comparado com JSP, pois não usa a compilação para servlet;
- Criação simplificada de templates;
- Uso de código JSF em tags HTML com o atributo jsfc (não é muito recomendado);
- Camada de visão padrão para o JSF 2.0;
Mais informações >>aqui<<.
Versões utilizadas
- Eclipse 3.4.1
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- JUnit 4.5
- Caelum Stella 1.2
Estrutura do projeto

Leia o resto deste post »
Enviado em Facelets, Framework, Hibernate, Java, JSF, JUnit, MySQL | 21 Comentários »
Publicado por Sergio Fantin em agosto 28, 2009
Neste post irei mostrar uma das implementações de combos aninhados estados/cidades. Percebi nas listas e fóruns que esse é um problema comum, onde desenvolvedores se deparam frequentemente.
Utilizarei Tomcat, Hibernate e MySQL para a persistência de dados e disponilizarei o projeto para download com o script sql contendo a lista completa de estados/cidades brasileiras.
Para gerenciar as sessões/transações do Hibernate criei um serlvet filter Open Session In View fazendo papel de um interceptador, que será executado a cada request e response.
Obs: o projeto vai com o script.sql com os Estados e Cidades brasileiras
Estrutura do projeto

Versões utilizadas
- Eclipse 3.4.1
- JDK 1.6
- Tomcat 6.0.18
- MyFaces 1.2.5
- RichFaces 3.3.1
- Hibernate Annotations 3.4.0
- Hibernate 3.3.1
- MySQL 5
- MySQL Query Browser 1.2
Códigos
Estado.java:
package br.com.serjaum.modelo;
import java.io.Serializable;import java.util.ArrayList;import java.util.List;
import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
@Entity@Table(name="estados")public class Estado implements Serializable {
private static final long serialVersionUID = -5582648910303813488L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="ESTADO_ID") private Long id;
@Column(name="sigla") private String sigla;
@Column(name="nome") private String nome;
@OneToMany(mappedBy="estado", fetch=FetchType.LAZY) @Cascade(org.hibernate.annotations.CascadeType.ALL) private List<Cidade> cidades = new ArrayList<Cidade>();
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getNome() { return nome; }
public void setNome(String nome) { this.nome = nome; }
public String getSigla() { return sigla; }
public void setSigla(String sigla) { this.sigla = sigla; }
public List<Cidade> getCidades() { return cidades; }
public void setCidades(List<Cidade> cidades) { this.cidades = cidades; }
public String toString() { return this.nome; }
@Override public boolean equals(Object obj){ if( (obj instanceof Estado) && ( ((Estado)obj).getNome().equals(this.nome))){ return true; }else { return false; } }
public int hashCode(){ return this.nome.length() * 23; }
}
Cidade.java:
package br.com.serjaum.modelo;
import java.io.Serializable;
import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;
@Entity@Table(name="cidades")public class Cidade implements Serializable{
private static final long serialVersionUID = -2094704997130038211L;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column(name="CIDADE_ID") private Long id;
@Column(name="nome") private String nome;
@ManyToOne(cascade=javax.persistence.CascadeType.ALL) @JoinColumn(name="id_cid_est") private Estado estado;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getNome() { return nome; }
public void setNome(String nome) { this.nome = nome; }
public Estado getEstado() { return estado; }
public void setEstado(Estado estado) { this.estado = estado; }
public String toString() { return this.nome; }
@Override public boolean equals(Object obj){ if( (obj instanceof Cidade) && ( ((Cidade)obj).getNome().equals(this.nome))){ return true; }else { return false; } }
public int hashCode(){ return this.nome.length() * 23; }}
Leia o resto deste post »
Enviado em Framework, Hibernate, Java, JSF, MySQL | 14 Comentários »
Publicado por Sergio Fantin em agosto 27, 2009
Este é o último post referente à nossa aplicação JSF completa utilizando RichFaces + Hibernate + MySQL na prática.
Dando continuidade ao desenvolvimento da nossa aplicação, adicionarei a parte de autenticação, pois percebi nas listas e fóruns que esse é um problema comum, onde desenvolvedores se deparam frequentemente, por não se tratar de um problema trivial.
Na implementação usarei um Servlet Filter fazendo papel de um interceptador, que será executado a cada request e response. Ele verificará se o usuário pode se logar no sistema, caso contrário redirecionará o mesmo para uma página de login.
Estrutura do projeto

Códigos
AuthFilter.jsp:
package br.com.serjaum.filtro;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AuthFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest rq = (HttpServletRequest) request;
HttpServletResponse rp = (HttpServletResponse) response;
boolean auth = rq.getSession().getAttribute("user") != null;
if (!auth && !rq.getRequestURL().toString().contains("login.jsf")) {
rp.sendRedirect(rq.getContextPath() + "/pages/login/login.jsf");
} else {
try {
chain.doFilter(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void destroy() {
}
public void init(FilterConfig config) throws ServletException {
}
}
Leia o resto deste post »
Enviado em Framework, Hibernate, Java, JSF, JUnit, MySQL | 12 Comentários »
Publicado por Sergio Fantin em agosto 25, 2009
Este é o quinto post referente à nossa aplicação JSF completa utilizando RichFaces + Hibernate + MySQL na prática.
Dando continuidade ao desenvolvimento da parte visual da nossa aplicação, adicionarei as regras de navegação, CSS, máscaras para os campos, validadores, conversores e Ajax.
Estrutura do projeto
Códigos
index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="StyleSheet" type="text/css" href="/jsf/style/estilos.css" media="screen" />
<script type="text/javascript" src="/jsf/resources/jquery.maskedinput-1.2.1.js"></script>
</head>
<body>
<f:view>
<h:form>
<h:messages />
<fieldset>
<legend>Cadastro de Pessoas Físicas</legend>
<h:panelGrid>
<h:commandLink value="Adicionar pessoa" action="toCadastraPessoa" />
<h:commandLink value="Pesquisar pessoa" action="toPesquisaPessoa" />
<h:commandLink value="Remover pessoa" action="toRemovePessoa" />
<h:commandLink value="Atualizar pessoa" action="toAtualizaPessoa" />
</h:panelGrid>
</fieldset>
</h:form>
</f:view>
</body>
</html>
Leia o resto deste post »
Enviado em Framework, Hibernate, Java, JSF, JUnit, MySQL | 6 Comentários »
Publicado por Sergio Fantin em agosto 19, 2009
Este é o quarto post referente à nossa aplicação JSF completa utilizando RichFaces + Hibernate + MySQL na prática.
Dando continuidade ao desenvolvimento da nossa aplicação, codificarei o Managed Bean, que é a classe que receberá as solicitações da camada de visão (JSP), e as encaminhará para a camada de Façade. Nesta etapa o sistema já entrará em funcionamento com suas operações CRUD básicas.
Estrutura do projeto

Códigos
PessoaMB.java:
package br.com.serjaum.mb;
import java.io.Serializable;
import java.util.List;
import br.com.serjaum.facade.PessoaFacade;
import br.com.serjaum.facade.PessoaFacadeImpl;
import br.com.serjaum.modelo.Pessoa;
public class PessoaMB implements Serializable {
private static final long serialVersionUID = -333995781063775201L;
private Pessoa pessoa = new Pessoa();
private Long id;
public PessoaMB(){
System.out.println(" >>>>>>>>>>>>>>>>>>>> Contrutor do PESSOA_MB <<<<<<<<<<<<<<<<<<");
if(this.pessoa == null){
this.pessoa = new Pessoa();
}
}
public String save(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
pessoaService.salva(this.pessoa);
this.pessoa = new Pessoa();
return "cadastraSucesso";
}
public String delete(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
this.pessoa.setId(id);
pessoaService.remove(this.pessoa);
this.pessoa = new Pessoa();
return "removeSucesso";
}
public String merge(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
pessoaService.atualiza(this.pessoa);
this.pessoa = new Pessoa();
return "atualizaSucesso";
}
public String load(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
this.pessoa = pessoaService.procura(this.id);
return "pesquisaSucesso";
}
public String pesquisaByNome(){
PessoaFacadeImpl pessoaService = new PessoaFacadeImpl();
this.pessoa = pessoaService.procuraByNome(this.pessoa.getNome());
return "pesquisaByNomeSucesso";
}
public List<Pessoa> getPessoas(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
return pessoaService.lista();
}
public List<Pessoa> getPessoasByNome(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
List<Pessoa> lista = pessoaService.pesquisaPessoasByNome(this.pessoa.getNome());
return lista;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
atualizaPessoa.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="rich" uri="http://richfaces.ajax4jsf.org/rich"%>
<%@ taglib prefix="a4j" uri="http://richfaces.org/a4j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<f:view>
<h:form>
<a4j:keepAlive beanName="pessoaMB" />
<fieldset><legend>Atualização de Dados</legend>
<rich:dataTable value="#{pessoaMB.pessoas}" var="fisica" rows="10" id="fisicas" width="100%" cellspacing="0" cellpadding="0" border="1">
<h:column>
<f:facet name="header">
<h:outputText value="NOME" />
</f:facet>
<h:outputText value="#{fisica.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="E-MAIL" />
</f:facet>
<h:outputText value="#{fisica.email}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CPF" />
</f:facet>
<h:outputText value="#{fisica.cpf}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="DATA NASC." />
</f:facet>
<h:outputText value="#{fisica.dataNascimento}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CELULAR" />
</f:facet>
<h:outputText value="#{fisica.telefoneCelular}" />
</h:column>
<h:column>
<a4j:commandLink reRender="panelGridInputs">
<h:outputText value="Atualiza"/>
<f:setPropertyActionListener value="#{fisica}" target="#{pessoaMB.pessoa}"/>
</a4j:commandLink>
</h:column>
<f:facet name="footer">
<rich:datascroller />
</f:facet>
</rich:dataTable>
<h:panelGrid columns="2" id="panelGridInputs">
<h:outputLabel for="nome" value="Nome " />
<h:inputText id="nome" value="#{pessoaMB.pessoa.nome}" style=" width : 254px;"/>
<h:outputLabel for="email" value="E-mail " />
<h:inputText id="email" value="#{pessoaMB.pessoa.email}" style=" width : 249px;"/>
<h:outputLabel for="cpf" value="CPF " />
<h:inputText id="cpf" validatorMessage="CPF inválido!" value="#{pessoaMB.pessoa.cpf}" size="60" style=" width : 106px;"/>
<h:outputLabel for="dataNasc" value="Data Nascimento: " />
<h:inputText id="dataNasc" validatorMessage="Data de nascimento com formato inválido!" value="#{pessoaMB.pessoa.dataNascimento}" size="60" style=" width : 75px;">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:inputText>
<h:outputLabel for="telCel" value="Tel. Celular " />
<h:inputText id="telCel" value="#{pessoaMB.pessoa.telefoneCelular}" />
<h:commandButton value="Salvar modificações" action="#{pessoaMB.merge}"/>
</h:panelGrid>
</fieldset>
</h:form>
</f:view>
</body>
</html>
Leia o resto deste post »
Enviado em Framework, Hibernate, Java, JSF, JUnit, MySQL | 4 Comentários »
Publicado por Sergio Fantin em agosto 18, 2009
Este é o terceiro post referente à nossa aplicação JSF completa utilizando RichFaces + Hibernate + MySQL na prática.
Dando continuidade ao desenvolvimento da nossa aplicação, codificarei a camada de Façade que é responsável por abstrair a camada de negócios, que contribuirá para a redução do acoplamento entre as camadas da aplicação. Essa camada tem a função de receber solicitações de operações e repassá-las para os métodos de negócio/persistência que estão em outras camadas, mantendo a arquitetura coerente e aumentando a manutenabilidade da aplicação.
Obs: por se tratar de um tutorial prático, preferi simplificar a aplicação adicionando a camada de Façade de uma maneira simples, por isso fiz o gerenciamento de sessões/transações dentro da classe PessoaFacadeImpl.java. O ideal seria retirar esse código de abertura/fechamento de sessões/transações e colocá-lo em um filtro, por exemplo: Open Session In View. Isso é aplicado quando utilizamos um Servlet Contêiner como o Tomcat ou Jetty, mas se o deploy for feito em um Servidor de Aplicação (JBoss, GlassFish, etc) o gerenciamento fica por conta do mesmo, daí é só alegria (ou não?!).
Estrutura do projeto

Códigos
BaseFacade.java:
package br.com.serjaum.facade;
import java.io.Serializable;
import java.util.List;
public interface BaseFacade<T> extends Serializable {
public abstract void salva(T t);
public abstract void remove(T t);
public abstract T procura(Long id);
public abstract void atualiza(T t);
public abstract List<T> lista();
}
PessoaFacade.java:
package br.com.serjaum.facade;
import java.util.List;
import br.com.serjaum.modelo.Pessoa;
public interface PessoaFacade extends BaseFacade<Pessoa>{
public void salva(Pessoa p);
public void remove(Pessoa p);
public Pessoa procura(Long id);
public void atualiza(Pessoa p);
public List<Pessoa> pesquisaPessoasByNome(String nome);
}
Leia o resto deste post »
Enviado em Framework, Hibernate, Java, JSF, JUnit, MySQL | 1 Comentário »