Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/feed-rss2.php on line 8
JavaSE – Aprenda Java https://www.feltex.com.br/felix Cursos de java, SQL e Engenharia de Software Thu, 05 Feb 2015 17:10:01 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.1.6 Agendador de Tarefas Quartz https://www.feltex.com.br/felix/agendador-tarefas-quartz/ https://www.feltex.com.br/felix/agendador-tarefas-quartz/#respond Thu, 12 Jun 2014 05:00:26 +0000 http://www.feltex.com.br/felix/?p=857 Agendador de Tarefas Quartz Olá Amigos, Hoje faremos um agendador de Tarefas Quartz Framework. Um agendador de tarefas é um processo que será executado em uma determinada data e horário específico. Esse momento de execução pode ser cíclico, ou seja, …

Agendador de Tarefas Quartz Read More »

The post Agendador de Tarefas Quartz appeared first on Aprenda Java.

]]>

Agendador de Tarefas Quartz

Olá Amigos,

Hoje faremos um agendador de Tarefas Quartz Framework. Um agendador de tarefas é um processo que será executado em uma determinada data e horário específico. Esse momento de execução pode ser cíclico, ou seja, há uma repetição (diária, semanal, mensal, anual) ou em intervalos menores como (segundos, minutos ou horas).
Utilizaremos a versão 2.2.
timer-icon

Para iniciar faça o download dos arquivos no site oficial. Esses são os arquivos necessário que você deve adicionar no class path da aplicação.

 c3p0-0.9.1.1.jar
 log4j-1.2.16.jar
 quartz-2.2.1.jar
 quartz-jobs-2.2.1.jar
 slf4j-api-1.6.6.jar
 slf4j-log4j12-1.6.6.jar

No código abaixo criaremos a classe que conterá a regra de negócio que vai ser agendada para execução.

package br.com.feltex.quartz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class AtualizaCadastroJOB implements Job {


     //Aqui fica o código que será executado pelo agendamento.
     // Caso ocorra um erro de execução uma exceção será lançada. 
	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		System.out.println("Cadastro atualizado com sucesso!");		
	}
}

Em seguida criaremos a classe que dispara o JOB. Fiz comentário em cada linha para que fique bem claro o que está sendo feito.

package br.com.feltex.quartz;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

// Classe que dispara o JOB
public class AgendaTrigger {

	public static void main(String[] args) {

		try {
			// Registrando a classe que execurá meus métodos de negócio
			JobDetail job = JobBuilder.newJob(AtualizaCadastroJOB.class)
					.withIdentity("nomeMeuJOB", "grupoCadastro").build();

			// Criado um objeto de intervalo de repetição
			// No nosso caso será de 2 segundos
			SimpleScheduleBuilder intervalo = SimpleScheduleBuilder
					.simpleSchedule().withIntervalInSeconds(2).repeatForever();

			// Criado um disparador
			Trigger trigger = TriggerBuilder.newTrigger()
					.withIdentity("nomeDisparador", "grupoCadastro")
					.withSchedule(intervalo).build();

			
			// Finalmente é criado um objeto de agendamento
			// que recebe o JOB e o disparador!
			Scheduler scheduler = new StdSchedulerFactory().getScheduler();
			scheduler.start();
			scheduler.scheduleJob(job, trigger);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Pronto. Basta executar a classe “AgendaTrigger” que você verá a execução a cada 2 segundos.
Veja um exemplo de saída:

Cadastro atualizado com sucesso!
Cadastro atualizado com sucesso!
Cadastro atualizado com sucesso!
Cadastro atualizado com sucesso!
Cadastro atualizado com sucesso!

Links relacionados


Site oficial Quartz

Gostou do post? Agradeça o autor compartilhando nas redes sociais. Clique nos links abaixo:

The post Agendador de Tarefas Quartz appeared first on Aprenda Java.

]]>
https://www.feltex.com.br/felix/agendador-tarefas-quartz/feed/ 0
Criando XML em Java XStream https://www.feltex.com.br/felix/criando-xml-xstream-java/ https://www.feltex.com.br/felix/criando-xml-xstream-java/#respond Thu, 05 Jun 2014 13:39:44 +0000 http://www.feltex.com.br/felix/?p=834 Criando XML em Java XStream Olá Amigos, Trabalhar com XML em Java pode ser uma tarefa bem fácil. Isso porque existem vários frameworks que nos auxiliam nessa atividade. Hoje mostraremos como usar o XStream . Criação das classes package br.com.feltex.webservice.xstream; …

Criando XML em Java XStream Read More »

The post Criando XML em Java XStream appeared first on Aprenda Java.

]]>

Criando XML em Java XStream


Olá Amigos,

Trabalhar com XML em Java pode ser uma tarefa bem fácil. Isso porque existem vários frameworks que nos auxiliam nessa atividade. Hoje mostraremos como usar o XStream .

xml


Criação das classes

package br.com.feltex.webservice.xstream;

import java.util.Date;

public class Cliente {
	
	private String nome;
	
	private int codigo;
	
	private String cpf;
	
	private double salario;
	
	private Date dataNascimento;

	public Cliente(int codigo, String nome) {
		this.codigo = codigo;
		this.nome = nome;
	}

	public int getCodigo() {
		return codigo;
	}

	public String getCpf() {
		return cpf;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public String getNome() {
		return nome;
	}

	public double getSalario() {
		return salario;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setSalario(double salario) {
		this.salario = salario;
	}

	@Override
	public String toString() {
		return "Cliente [nome=" + nome + ", codigo=" + codigo + ", cpf=" + cpf
				+ ", salario=" + salario + ", dataNascimento=" + dataNascimento
				+ "]";
	}	
}

Em seguida crie a classe XStreamParser que transformará o objeto Cliente em XML e transformará de xml para objeto.

package br.com.feltex.webservice.xstream;

import java.io.File;
import java.io.FileWriter;
import java.util.Date;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class XStreamParser {

	public static void main(String arg[]) {
		try {
			// Criação do objeto
			Cliente cli = new Cliente(1, "Maria da Silva");
			cli.setDataNascimento(new Date());
			cli.setSalario(223.09);
			XStream xstream = new XStream(new DomDriver());

			xstream.alias("cliente", Cliente.class);
			String xml = xstream.toXML(cli);

			// Saída do resultado
			System.out.println(xml);

			FileWriter fw = new FileWriter("meuCliente.xml");
			fw.write(xml);
			fw.close();

			// Retorno de um XML para uma classe
			Cliente novoCliente = (Cliente) xstream.fromXML(new File(
					"meuCliente.xml"));
			System.out.println(novoCliente);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Pronto. Agora você já sabe criar XML de forma simples e prática.

Conclusão:


Utilizar o xStream é uma ótima solução para manipulação de XML em Java. Aproveite esta poderosa ferramenta e construa suas exportações para XML de forma prática e simples.
Há também a possibilidade de construção de arquivos no formato JSON.

Links relacionados:

Acesse o site oficial do xStream clique aqui.

Gostou do post? Agradeça o autor compartilhando nas redes sociais. Clique nos links abaixo:

The post Criando XML em Java XStream appeared first on Aprenda Java.

]]>
https://www.feltex.com.br/felix/criando-xml-xstream-java/feed/ 0
Curso Básico de Java https://www.feltex.com.br/felix/curso-java-basico/ https://www.feltex.com.br/felix/curso-java-basico/#respond Thu, 29 May 2014 17:44:43 +0000 http://www.feltex.com.br/felix/?p=763 Curso Básico de Java – Aula 01 Hoje criaremos o nosso primeiro programa em Java. Veja como é fácil e simples programar em java. Veja o vídeo abaixo: Abaixo veja as outras aulas: Aula01 – Configuração do Java Aula02 – …

Curso Básico de Java Read More »

The post Curso Básico de Java appeared first on Aprenda Java.

]]>

Curso Básico de Java – Aula 01

Hoje criaremos o nosso primeiro programa em Java. Veja como é fácil e simples programar em java.

Veja o vídeo abaixo:

Abaixo veja as outras aulas:

Aula01 – Configuração do Java

Aula02 – Primeiro Programa Java

Aula03 – Variaveis Java

Aula04 – Leitura de Dados Java

Aula05 – Convenções Java

Aula06 – Controle de Fluxo IF Java

Aula07 – Switch Java

The post Curso Básico de Java appeared first on Aprenda Java.

]]>
https://www.feltex.com.br/felix/curso-java-basico/feed/ 0
Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic) https://www.feltex.com.br/felix/exemplo-completo-com-jsf-primefaces-ejb-hibernate-mysql-jms-topic/ https://www.feltex.com.br/felix/exemplo-completo-com-jsf-primefaces-ejb-hibernate-mysql-jms-topic/#respond Thu, 08 May 2014 20:00:27 +0000 http://www.feltex.com.br/felix/?p=677 Olá Amigos, Hoje finalizaremos a inclusão de Fila JMS no AcademicNet. Agora vamos incluir uma fila topic. Se você não leu o artigo anterior acesse aqui. Nele são feitas as configurações iniciais. Veja como será o exemplo: Tarefas: – Criação …

Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic) Read More »

The post Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic) appeared first on Aprenda Java.

]]>
Olá Amigos,

Hoje finalizaremos a inclusão de Fila JMS no AcademicNet. Agora vamos incluir uma fila topic.
Se você não leu o artigo anterior acesse aqui. Nele são feitas as configurações iniciais.

Veja como será o exemplo:
topic


Tarefas:

– Criação de componentes 3 MDBs para consumir as filas
– Criação do Servlet que enviará uma mensagem para a fila

Criação dos consumidores MDB (Message Drive Bean)

Nesta parte criaremos 3 MDBs que consumirão a fila de Professores. Para cada mensagem incluída na Fila do tipo TOPIC todos os MDBs que estão configurando para consumir a fila receberão a mesma mensagem.

package br.com.feltex.academicnet.mdb;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.TextMessage;

import br.com.feltex.academicnet.entidade.Professor;

/**
 * Message-Driven Bean implementation class for: ProfessorMDB
 */
@MessageDriven(activationConfig = {
		@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
		@ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/topic/professorTopic") }, mappedName = "java:/topic/professorTopic")
public class ProfessorTopicMDB1 implements MessageListener {

	public ProfessorTopicMDB1() {

	}

	public void onMessage(Message message) {
		System.out.println(getClass() + " Inicio");
		try {

			if (message instanceof TextMessage) {
				TextMessage mensagem = (TextMessage) message;
				System.out.println("Mensagem recebida: " + mensagem.getText());
			} else if (message instanceof ObjectMessage) {
				try {
					ObjectMessage obj = (ObjectMessage) message;
					Professor professor = (Professor) obj.getObject();
					System.out.println("Objeto Recebido: " + professor);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(getClass() + " Fim");
	}
}
package br.com.feltex.academicnet.mdb;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.TextMessage;

import br.com.feltex.academicnet.entidade.Professor;

/**
 * Message-Driven Bean implementation class for: ProfessorMDB
 */
@MessageDriven(activationConfig = {
		@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
		@ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/topic/professorTopic") }, mappedName = "java:/topic/professorTopic")
public class ProfessorTopicMDB2 implements MessageListener {

	public ProfessorTopicMDB2() {

	}

	public void onMessage(Message message) {
		System.out.println(getClass() + " Inicio");
		try {

			if (message instanceof TextMessage) {
				TextMessage mensagem = (TextMessage) message;
				System.out.println("Mensagem recebida: " + mensagem.getText());
			} else if (message instanceof ObjectMessage) {
				try {
					ObjectMessage obj = (ObjectMessage) message;
					Professor professor = (Professor) obj.getObject();
					System.out.println("Objeto Recebido: " + professor);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(getClass() + " Fim");
	}
}

package br.com.feltex.academicnet.mdb;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.TextMessage;

import br.com.feltex.academicnet.entidade.Professor;

/**
 * Message-Driven Bean implementation class for: ProfessorMDB
 */
@MessageDriven(activationConfig = {
		@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
		@ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/topic/professorTopic") }, mappedName = "java:/topic/professorTopic")
public class ProfessorTopicMDB3 implements MessageListener {

	public ProfessorTopicMDB3() {

	}

	public void onMessage(Message message) {
		System.out.println(getClass() + " Inicio");
		try {

			if (message instanceof TextMessage) {
				TextMessage mensagem = (TextMessage) message;
				System.out.println("Mensagem recebida: " + mensagem.getText());
			} else if (message instanceof ObjectMessage) {
				try {
					ObjectMessage obj = (ObjectMessage) message;
					Professor professor = (Professor) obj.getObject();
					System.out.println("Objeto Recebido: " + professor);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(getClass() + " Fim");
	}
}

Observe que o código dos nossos MDBs são iguais. Todos recebem um objeto professor e exibem os dados. Podemos determinar que cada um deles execute uma atividade diferente. Imagine que definimos 3 tarefas diferentes com a mensagem recebida:
enviar e-mail,
gravar em um Banco de Dados
chamar um serviço externo passando o objeto Professor
Esta situação seria atendida pelo nosso exemplo, pois a mesma mensagem gravada na fila

Agora vamos criar o Servlet que irá gravar a mensagem na fila. Esta mensagem conterá um objeto Professor.


package br.com.feltex.academicnet.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.annotation.Resource;
import javax.inject.Inject;
import javax.jms.JMSConnectionFactory;
import javax.jms.JMSContext;
import javax.jms.JMSException;
import javax.jms.ObjectMessage;
import javax.jms.Topic;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.feltex.academicnet.entidade.Professor;

@WebServlet("/ProfessorServletJMS2")
public class ProfessorServletJMS2 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Resource(mappedName = "java:/topic/professorTopic")
	private Topic topic;

	@Inject
	@JMSConnectionFactory("java:/ConnectionFactory")
	private JMSContext context;

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println(getClass() + "Inicio........");
		Professor professor = new Professor();
		professor.setMatricula(2221L);
		professor.setNome("Maria da Silva");
		enviarObjetoForma1(professor);
		System.out.println(getClass() + "Fim........");

		PrintWriter out = response.getWriter();
		out.print("

Objeto enviado com sucesso! JMS TOPIC 2.0

"); } /** * Envia um objeto complexo para a fila JMS * * */ public void enviarObjetoForma1(Professor professor) { try { ObjectMessage objMessage = context.createObjectMessage(); objMessage.setObject(professor); context.createProducer().send(topic, objMessage); } catch (JMSException ex) { ex.printStackTrace(); } } }

Execução do projeto
Rode o projeto completo. Acesse o menu principal e escolha as opções de envio JMS
“Envio de Mensagem JMS 2.0 (Topic) – Professor”

Links relacionados


Exemplo Completo (AcademicNetWebJMS.war)
Abraços e bons estudos.

The post Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic) appeared first on Aprenda Java.

]]>
https://www.feltex.com.br/felix/exemplo-completo-com-jsf-primefaces-ejb-hibernate-mysql-jms-topic/feed/ 0
Exportando um projeto Web no Eclipse https://www.feltex.com.br/felix/exportando-projeto-web-eclipse/ https://www.feltex.com.br/felix/exportando-projeto-web-eclipse/#respond Thu, 08 May 2014 18:04:17 +0000 http://www.feltex.com.br/felix/?p=700 Olá amigos, Hoje iremos aprender como realizar a exportação de um arqui projeto Java Web no Eclipse. Exportando um projeto Web no Eclipse Abra o seu eclipse e siga as etapas: 1. Selecione o projeto. Utilize o projeto “AcademicNetWeb” 2. …

Exportando um projeto Web no Eclipse Read More »

The post Exportando um projeto Web no Eclipse appeared first on Aprenda Java.

]]>
Olá amigos,

Hoje iremos aprender como realizar a exportação de um arqui projeto Java Web no Eclipse.

Exportando um projeto Web no Eclipse

Abra o seu eclipse e siga as etapas:
1. Selecione o projeto. Utilize o projeto “AcademicNetWeb”
2. Clique com o botão direito e selecione “Export >> WAR file”, conforme imagem abaixo:

Exportando um projeto Web no Eclipse1

3. Aparecerá a seguinte tela.

Exportando um projeto Web no Eclipse2

4. Em “Destination” aponte para uma pasta de sua escolha.
5. Selecione “Optimize for a specific server runtime” quando souber o tipo de servidor que rodará o projeto.
6. Selecione a opção “Export source files” para exporta os arquivos “.java” do projeto.
Atenção! Não esqueça de marcar esta opção para enviar o código fonte.

7. Se marcar a opção “Overwrite existing file” o Eclipse irá sobre-escrever o arquivo de destino com o mesmo nome.
8. Clique em “Finish”.

Agora você tem o seu projeto exportado. Parabéns!
“Vida que segue!”

Links relacionados

Como aprender Java
Tutorial da Oracle – WAR

The post Exportando um projeto Web no Eclipse appeared first on Aprenda Java.

]]>
https://www.feltex.com.br/felix/exportando-projeto-web-eclipse/feed/ 0
Exemplo completo com JSF Primefaces + Hibernate + MySQL https://www.feltex.com.br/felix/exemplo-completo-com-jsf-primefaces-hibernate-mysql/ https://www.feltex.com.br/felix/exemplo-completo-com-jsf-primefaces-hibernate-mysql/#respond Tue, 08 Apr 2014 04:07:40 +0000 http://www.feltex.com.br/felix/?p=551 Exemplo completo com JSF Primefaces + Hibernate + MySQL Olá Amigos, Hoje criaremos um projeto completo com as tecnologias java: JSF (Primefaces) + Hibernate + MySQL ou PostgreSQL. E como de costume iniciaremos com uma breve descrição de cada uma …

Exemplo completo com JSF Primefaces + Hibernate + MySQL Read More »

The post Exemplo completo com JSF Primefaces + Hibernate + MySQL appeared first on Aprenda Java.

]]>

Exemplo completo com JSF Primefaces + Hibernate + MySQL


Olá Amigos,

Hoje criaremos um projeto completo com as tecnologias java: JSF (Primefaces) + Hibernate + MySQL ou PostgreSQL.
E como de costume iniciaremos com uma breve descrição de cada uma delas.
Vamos utilizar o nosso sistema acadêmico chamado de AcademicNet para aplicar os conceitos.

Tecnologias utilizadas no exemplo

  • JSF (Java Serer Faces) é a tecnologia Java para construção de páginas dinâmicas.
  • Primefaces é uma biblioteca de componentes para RIA – Rich Internet Application. O que torna os sistemas com uma interface mais amigável para os usuários.
  • Hibernate é um framework para o mapeamento objeto-relacional. Facilita o mapeamento dos atributos entre um Banco de dados Relacional e o modelo de objetos de uma aplicação.
  • O exemplo funciona tanto com MySQL quanto com PostgreSQL

  • MySQL – Banco de dados Relacional muito utilizado no mundo corporativo.
  • Primefaces

    Nossa aplicação funcionará da seguinte maneira.

    A página inicial é a index.jsp Ela faz a apresentação do projeto e quando clicamos na imagem será exibido o menu.jsp nesse menu podemos escolher várias opções de CRUD. A primeira é a mais importante para nós. “Manter Aluno JSF”.

    Veja o código abaixo:

    
    
    
    Menu de opções
    
    
    	
    
    
    

    Essa opção de menu nos levará até a página de cadastro utilizando JSF.

    As primeiras linhas determinam que vamos utilizar JFS, com as URIs dentro da tag . A URI xmlns:p=”http://primefaces.org/ui” informa que utilizaremos o framework Primefaces.

    Observe que para cada campo texto temos um atributo value apontando para uma propriedade da entidade aluno. Veja o exemplo de matrícula:
    . Isso significa que tudo que eu digitado no campo matrícula será atribuído a um objeto aluno.matrícula. Isso ocorre através de uma classe Managed Bean. Ela faz, de forma mais simples, o que as classes Servlets fazem.

    
    
    
    
    	
    
    	
    		
    			
    			
    
    			
    			
    			
    			
    			
    			
    			
    			
    				
    			
    		
    		
    			
    			
    			
    			
    			
    			
    
    		
    	
    	
    		Lista de Alunos
    		
    			
    		
    			
    		
    		
    			
    		
    			
    		
    	
    
    
    

    No arquivo web.xml fazemos algumas configurações para que o nosso projeto esteja preparado para executar JSF. Essas configurações são opcionais para utilização do Framework Primefaces.

    
    
    
    	AcademicNetWebEJB
    	
    		index.jsp
    	
    	
    		javax.faces.PROJECT_STAGE
    		Development
    	
    	
    		Faces Servlet
    		javax.faces.webapp.FacesServlet
    		1
    	
    	
    		Faces Servlet
    		*.jsf
    		*.faces
    		*.xhtml
    		
    
    
    

    Veja o código do nosso “alunoMB”. A novidade aqui é a anotação @ManagedBean. Isso determina que nossa classe é um tipo especial e que pode ser associada a uma
    tela. Neste caso este Managed Bean está associado à tela de aluno. Ela tem os métodos necessários para incluir, alterar, consultar, excluir e listar alunos.

    
    package br.com.feltex.academicnet.mb;
    
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.context.FacesContext;
    
    import br.com.feltex.academicnet.dao.AlunoDAO;
    import br.com.feltex.academicnet.dao.DAOFactory;
    import br.com.feltex.academicnet.entidade.Aluno;
    
    @ManagedBean(name = "alunoMB")
    public class AlunoMB implements Serializable {
    
    	private static final long serialVersionUID = 8103328274400432976L;
    	private Aluno aluno;
    	private List lista = new ArrayList<>();
    
    	AlunoDAO dao = DAOFactory.getAlunoDAO();
    
    	public AlunoMB() {
    		aluno = new Aluno();
    		listar();
    	}
    
    	public void alterar() {
    		System.out.println("Alterar aluno");
    		dao.alterar(aluno);
    		listar();
    		FacesContext.getCurrentInstance().addMessage(
    				null,
    				new FacesMessage(FacesMessage.SEVERITY_INFO,
    						"Manutenção de usuário: ",
    						"Usuario alterado com sucesso!"));
    	}
    
    	public void consultar() {
    		long matriculaConsulta = aluno.getMatricula();
    				System.out.println("Consultar");
    		aluno = dao.consultar(aluno);
    		if (aluno == null || aluno.getMatricula() == 0) {
    			FacesContext.getCurrentInstance().addMessage(
    					null,
    					new FacesMessage(FacesMessage.SEVERITY_ERROR,
    							"Manutenção de usuário: ",
    							"Usuario não encontrado matrícula:" + matriculaConsulta + "!"));
    		}
    		listar();
    
    	}
    
    	public void excluir() {
    		System.out.println("Excluir aluno");
    		dao.excluir(aluno);
    		listar();
    		FacesContext.getCurrentInstance().addMessage(
    				null,
    				new FacesMessage(FacesMessage.SEVERITY_INFO,
    						"Manutenção de usuário: ",
    						"Usuario excluído com sucesso!"));
    	}
    
    	public Aluno getAluno() {
    		return aluno;
    	}
    
    	public List getLista() {
    		return lista;
    	}
    
    	public void incluir() {
    		System.out.println("Incluir aluno");
    		dao.inserir(aluno);
    		listar();
    		FacesContext.getCurrentInstance().addMessage(
    				null,
    				new FacesMessage(FacesMessage.SEVERITY_INFO,
    						"Manutenção de usuário: ",
    						"Usuario incluido com sucesso!"));
    	}
    
    	public void limpar() {
    		System.out.println("Limpar");
    		System.out.println(aluno);
    		aluno = new Aluno();
    	}
    
    	public void listar() {
    		System.out.println("Listar aluno");
    		lista = dao.listar();
    	}
    
    	public void setAluno(Aluno aluno) {
    		this.aluno = aluno;
    	}
    
    	public void setLista(List lista) {
    		this.lista = lista;
    	}
    }
    

    Depois compare esse managedBean com o servlet “AlunoServlet”.

    O nosso ManagedBean utilizar um padrão de projeto DAOFactory, ou seja, existe uma classe que gera uma instância de um objeto que acessa o Banco de dados.
    AlunoDAO dao = DAOFactory.getAlunoDAO();

    Código abaixo:

    package br.com.feltex.academicnet.dao;
    
    import br.com.feltex.academicnet.dao.hibernate.AlunoHibernateDAO;
    import br.com.feltex.academicnet.dao.jdbc.ProfessorDAO;
    import br.com.feltex.academicnet.dao.jdbc.ProfessorJDBCDAO;
    import br.com.feltex.academicnet.dao.jdbc.TurmaDAO;
    import br.com.feltex.academicnet.dao.jdbc.TurmaJDBCDAO;
    import br.com.feltex.academicnet.dao.jdbc.UsuarioJDCBDAO;
    
    public class DAOFactory {
    
    	public static AlunoDAO getAlunoDAO() {
    		return new AlunoHibernateDAO();
    	}
    
    	public static ProfessorDAO getProfessorDAO() {
    		return new ProfessorJDBCDAO();
    	}
    
    	public static TurmaDAO getTurmaDAO() {
    		return new TurmaJDBCDAO();
    	}
    
    	public static UsuarioDAO getUsuarioDAO() {
    		return new UsuarioJDCBDAO();
    	}
    }
    

    Por exemplo o método “getAlunoDAO” nos retorna um objeto que acessa o banco de dados via Hibernate e o método getProfessorDAO retorna um acesso ao mesmo Banco de Dados via JDBC. Você pode pensar, mas quando isso seria útil de verdade?

    Imagine um sistema que temos Sistema de PDV (Ponto de Vendas). Meu sistema deve estar preparado para acessar qualquer banco de dados. Para isso o meu DAOFactory pode nos atender gerando objetos diferentes de acordo com parâmetros que eu informar.

    Minha classe “AlunoHibernateDAO” implementa a interface “AlunoDAO” que define a assinatura de todos os métodos necessários para acesso a banco de dados para a tabela aluno. Neste exemplo todo o controle de transação é gerenciado por nossa aplicação. É o chamado Bean Transation Management.

    package br.com.feltex.academicnet.dao.hibernate;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.hibernate.criterion.Order;
    import org.hibernate.criterion.Restrictions;
    
    import br.com.feltex.academicnet.dao.AlunoDAO;
    import br.com.feltex.academicnet.entidade.Aluno;
    import br.com.feltex.hibernate.util.HibernateUtil;
    
    public class AlunoHibernateDAO implements AlunoDAO {
    
    	private Session session;
    
    	public void alterar(Aluno p) {
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			session.update(p);
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    	}
    
    	public Aluno consultar(Aluno aluno) {
    		Aluno retorno = new Aluno();
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			retorno = (Aluno) session.get(Aluno.class, aluno.getMatricula());
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    		return retorno;
    	}
    
    	public void excluir(Aluno p) {
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			session.delete(p);
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    	}
    
    	public boolean existe(Aluno aluno) {
    
    		Aluno a = consultar(aluno);
    		return (a.getMatricula() != null);
    	}
    
    	public void inserir(Aluno p) {
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			session.save(p);
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    	}
    
    	@SuppressWarnings("unchecked")
    	public List listar() {
    		List lista = new ArrayList();
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			lista = (List) session.createCriteria(Aluno.class).list();
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    		return lista;
    	}
    
    	@SuppressWarnings("unchecked")
    	public List listar(Aluno aluno) {
    		Criteria c = session.createCriteria(Aluno.class);
    		if (aluno.getNome().length() > 0) {
    			c.add(Restrictions.like("nome", aluno.getNome() + "%"));
    		}
    		c.addOrder(Order.asc("nome"));
    		return (List) c.list();
    	}
    }
    

    O arquivo de configuração hibernate.cfg.xml. É nele que informação os dados de configuração de acesso ao banco de dados. Servidor, Porta, Nome do Banco, usuário e senha são as informações básicas para acesso do nosso Banco.

    hibernate.dialect => Define qual o "dialeto" será utilizado no banco de dados. Neste caso o dialeto para MySQL. Veja no final deste artigo o link para o catálogo de dialects
    hibernate.show_sql => Define se os comandos SQL gerados pelo Hibernate devem ser mostrados. (true ou false)
    hibernate.format_sql => Define se os comando SQL terão quebra de linha a parte significativa do script
    hibernate.jdbc.batch_size => Define a gravação de dados em lote.
    hibernate.hbm2ddl.auto => Possíveis valores e ações
    validate: validar o esquema, não faz alterações para o banco de dados.
    update: atualizar o esquema.
    create: cria o esquema, destruindo dados anteriores.
    create-drop: remover o esquema no final da sessão.

    No final a tag serve para mapear as entidades que serão utilizadas no Hibernate.

    ATENÇÃO> Não esqueça de adicionar a annotation @Entity a todas classes que foram informadas nas tags mapping

    
    
    
    	
    		 com.mysql.jdbc.Driver
            jdbc:mysql://localhost:3306/bdacademicnet
            root
            teco01
            org.hibernate.dialect.MySQLDialect
    		true
    		true
    		20
    		
    		
    		update
    		
    		
    		
    				
    	
    
    


    DICA: Existem 2 arquivos extras de configuração do Hibernate. Esses arquivos não são necessários no projeto.
    Caso você queria ver exemplos de configuração para PostgreSQL(hibernate.postgresql.cfg.xml) ou MySQL(hibernate.mysql.cfg.xml).
    Servem como apoio para alterações do arquivo: hibernate.cfg.xml

    Deixei disponível o projeto completo com o código fonte para auxiliar a todos no processo de aprendizado. Para baixar: Clique aqui

    Conclusão


    Este artigo mostra como fazer um CRUD simples com utilização do JSF utilizando o framework Primefaces junto com MySQL e Hibernate. Este mesmo exemplo funciona com JSP, JDBC e Servlet. Assim o leitor poderá fazer comparações de como funcionam essas tecnologias.

    Links relacionados

    Recomendo que leia: Como gerenciar a transação JPA com Hibernate via Filtro em projeto Web

    Leia também: Exemplo completo com JSF Primefaces + EJB + Hibernate + MySQL + JMS (Topic)

    Você irá gostar:Bean Transaction Management
    Hibernate Manual
    Hibernate Dialects

    Abraços e bons estudos.

    Não se esqueça de curtir este post nas redes sociais. Dê a sua contribuição social e ajude o autor:

    The post Exemplo completo com JSF Primefaces + Hibernate + MySQL appeared first on Aprenda Java.

    ]]>
    https://www.feltex.com.br/felix/exemplo-completo-com-jsf-primefaces-hibernate-mysql/feed/ 0
    Controle de Versão com Eclipse e Subversive https://www.feltex.com.br/felix/controle-de-versao-com-eclipse-subversive/ https://www.feltex.com.br/felix/controle-de-versao-com-eclipse-subversive/#respond Tue, 11 Mar 2014 04:59:56 +0000 http://www.feltex.com.br/felix/?p=379 Olá amigos, Hoje iremos fazer a configuração do nosso projeto no Servidor de SVN através do Eclipse e do plugin Subversive. Importaremos o projeto no Eclipse. Utilizarei o Sistema de avaliação. Acesse File > Import >> war. Next Selecione o …

    Controle de Versão com Eclipse e Subversive Read More »

    The post Controle de Versão com Eclipse e Subversive appeared first on Aprenda Java.

    ]]>
    Olá amigos,

    Hoje iremos fazer a configuração do nosso projeto no Servidor de SVN através do Eclipse e do plugin Subversive.

    Importaremos o projeto no Eclipse. Utilizarei o Sistema de avaliação. Acesse File > Import >> war. Next
    Selecione o Arquivo “SistemaAvaliacao06.war” e Finish. Agora com o projeto em nosso workspace devemos instalar o plugin Subeclipse.
    Acesse: Help => Eclipse Marketplace => Digite “Subversive”

    Controle de Versão com Eclipse_1

    Clique no botão “Install” => Next => Aceite o termo de uso => Finish
    O Eclipse pedirá permissão para reiniciar. Selecione OK.

    Controle de Versão com Eclipse_2

    O Eclipse terá que reiniciar. Confirme.

    Controle de Versão com Eclipse_3

    Após o Reinício. Agora você deve atualizar os plugins disponíveis. Acesse Help “Check for updates”.

    Controle de Versão com Eclipse_4

    Selecione os plug-ins disponíveis para atualização. Next >> Next. Aceite o termo de licença e Finish. Pronto. Já podemos compartilhar o nosso projeto.
    Selecione o seu projeto com o botão direito >> Team >> Share Project

    Controle de Versão com Eclipse_5

    Selecione a opção SVN e clique em next.
    Copie a URL do nosso projeto e cole no no campo URL: https://academicnet01.googlecode.com/svn/trunk/
    Preencha os campos Usuário e senha conforme os dados cadastrados no Google Codes “Aba Source”.

    Lembre-se: o usuário é o seu e-mail do Gmail, mas a senha é gerada pelo Google Code e tem que ser copiada no link disponível nessa página.
    O Eclipse solicitará a criação de perguntas e respostas para recuperação de configuração. Preencha da melhor forma que desejar.

    Controle de Versão com Eclipse_6

    Será exibida a seguinte tela:

    Controle de Versão com Eclipse_7

    Pronto. Agora o nosso projeto está compartilhado. Podemos fazer várias atividades de atualização, mudanças de versão, reversão.

    Seu workspace deve se parecer com a seguinte imagem.

    Controle de Versão com Eclipse_8

    Pronto. Agora o nosso projeto está compartilhado. Podemos fazer várias atividades de atualização, mudanças de versão, reversão.

    Abra a classe Usuario. Altere a linha 11 de “public class Usuario {“

    Controle de Versão com Eclipse_9

    Para “public class Usuario implements Serializable{“. E salve o arquivo arquivos em seguida.

    Controle de Versão com Eclipse_10

    Observe que o arquivo a parti de agora tem um sinal “>” no início do nome, isto significa que o arquivo foi alterado na sua máquina.
    Selecione a classe Usuário com o botão direito >> Team >> Commit. Isto é uma ação gera uma ação de envio do arquivo para o servidor.
    Você é obrigado a incluir um comentário.
    Procure sempre adicionar informações concisas para os próximos desenvolvedores entenderem o que foi feito.

    Controle de Versão com Eclipse_11>

    Selecione OK. Pronto o arquivo já está disponível no servidor.
    Agora você pode acessa-lo via TortoiseSVN (Repo Brawser) ou pelo Browser acessando o Site do Google Codes.

    Controle de Versão com Eclipse_12

    Comandos mais importantes:

    Sincronize with Repository: Verifica as diferenças entre o seu computador e o servidor.
    Commit: Enviar dados para o Servidor
    Update: Receber as atualizações dos outros usuários do servidor
    Update to Version: Você define qual versão será utilizada para atualização dos seus arquivos locais, por exemplo, estamos na versão 10 e queremos ver a versão 5. Informamos update to version 5.
    Revert: Quando fizermos uma alteração local e desfazer pegando a versão do servidor.

    Pronto. Bem vindo ao mundo do SVN. E vida que segue!

    The post Controle de Versão com Eclipse e Subversive appeared first on Aprenda Java.

    ]]>
    https://www.feltex.com.br/felix/controle-de-versao-com-eclipse-subversive/feed/ 0
    Manipulação de Arquivos em java https://www.feltex.com.br/felix/manipulacao-arquivos-java/ https://www.feltex.com.br/felix/manipulacao-arquivos-java/#respond Fri, 07 Mar 2014 15:21:16 +0000 http://www.feltex.com.br/felix/?p=319 Manipulação de Arquivos em java Olá Amigos, aqui trabalharemos com uma das APIs mais utilizadas em Java que é a manipulação de arquivos ou Java IO. Serão vários exemplos de como fazer diversas tarefas com arquivos. Operações mais básicas: Como …

    Manipulação de Arquivos em java Read More »

    The post Manipulação de Arquivos em java appeared first on Aprenda Java.

    ]]>

    Manipulação de Arquivos em java


    Olá Amigos, aqui trabalharemos com uma das APIs mais utilizadas em Java que é a manipulação de arquivos ou Java IO.
    Serão vários exemplos de como fazer diversas tarefas com arquivos.


    Operações mais básicas:
    Como Adicionar conteúdo em um arquivo
    Escrever arquivo com BufferedWriter
    Obter o caminho de arquivo

    Obter o tamanho do arquivo (Bytes)
    Verificar se um arquivo está oculto
    Verificar se existe um arquivo

    The post Manipulação de Arquivos em java appeared first on Aprenda Java.

    ]]>
    https://www.feltex.com.br/felix/manipulacao-arquivos-java/feed/ 0
    Como Ler propriedades do arquivo https://www.feltex.com.br/felix/como-ler-propriedades-arquivo/ https://www.feltex.com.br/felix/como-ler-propriedades-arquivo/#respond Fri, 07 Mar 2014 15:14:48 +0000 http://www.feltex.com.br/felix/?p=321 Como Ler propriedades do arquivo Olá Amigos, Hoje trataremos da leitura de propriedades de arquivos no Java. Como o Java é uma linguagem multiplataforma os métodos demonstrados aqui funcionam em qualquer que possuam uma JVM Instalada. Fiz tratamento especificamente para …

    Como Ler propriedades do arquivo Read More »

    The post Como Ler propriedades do arquivo appeared first on Aprenda Java.

    ]]>

    Como Ler propriedades do arquivo


    Olá Amigos,

    Hoje trataremos da leitura de propriedades de arquivos no Java. Como o Java é uma linguagem multiplataforma os métodos demonstrados aqui funcionam em qualquer que possuam uma JVM Instalada. Fiz tratamento especificamente para sistemas linux e Windows.
    Em outro post trataremos como fazer um programa que manipula arquivos e que seja multiplataforma.

    Como Ler propriedades do arquivo

    package br.com.feltex.arquivo;
    
    import java.io.File;
    
    public class LeituraPropriedadesArquivo {
    
    public static void main(String[] args) {
    	try {
    		// Este Path está definido para funcionar no Windows
    		File arquivo = new File("C:/relatorio.txt");
    
    		// Para uso no linux apenas descomente a linha abaixo.
    		// arquivo = new File("\\relatorio.txt");
    
    	System.out.println("Permite leitura: " + arquivo.canRead());
    	System.out.println("Permite escrita: " + arquivo.canWrite());
    	System.out.println("Permite Execução: " + arquivo.canExecute());
    	System.out.println("Está oculto: " + arquivo.isHidden());
    	System.out.println("É um diretório: " + arquivo.isDirectory());
    	System.out.println("É um arquivo: " + arquivo.isFile());
    	System.out.println("Caminho Absoluto: " + arquivo.getAbsolutePath());
    	System.out.println("Diretório pai: " + arquivo.getParent());
    	System.out.println("Tamanho em bytes: " + arquivo.length());
    	System.out.println("Cria um diretório: " + arquivo.mkdir());
    	System.out.println("Cria um caminho de diretórios: "
    			+ arquivo.mkdirs());
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    

    The post Como Ler propriedades do arquivo appeared first on Aprenda Java.

    ]]>
    https://www.feltex.com.br/felix/como-ler-propriedades-arquivo/feed/ 0
    Como criar um arquivo https://www.feltex.com.br/felix/como-criar-um-arquivo-2/ https://www.feltex.com.br/felix/como-criar-um-arquivo-2/#respond Fri, 07 Mar 2014 15:04:12 +0000 http://www.feltex.com.br/felix/?p=357 Como criar um arquivo Existem várias formas de criar arquivos em Java. Uma dessas maneiras é utilizando método do createNewFile() da classe File. O exemplo a seguir tenta criar um arquivo chamado “meuArquivo.txt”. Se conseguir exibe a mensagem de sucesso, …

    Como criar um arquivo Read More »

    The post Como criar um arquivo appeared first on Aprenda Java.

    ]]>

    Como criar um arquivo


    Existem várias formas de criar arquivos em Java. Uma dessas maneiras é utilizando método do createNewFile() da classe File.
    O exemplo a seguir tenta criar um arquivo chamado “meuArquivo.txt”. Se conseguir exibe a mensagem de sucesso, senão informa que o arquivo já existe ou lança uma exceção de manipulação de arquivo.

    
    package br.com.feltex.arquivo;
    
    import java.io.File;
    import java.io.IOException;
    
    public class CriacaoArquivo {
    
    public static void main(String[] args) {
     System.out.println("Inicio");
    	try {
    		File file = new File("c:/meuArquivo.txt");
    
    		if (file.createNewFile()) {
    			System.out.println("Arquivo Criado com sucesso!");
    		} else {
    			System.out.println("Arquivo já existe!");
    		}
    
    	} catch (IOException e) {
    		System.err.println("Houve um erro na criação do arquivo!");
    		e.printStackTrace();
    	}
    	System.out.println("Fim");
     }
    }
    

    Links:

    Classe File

    Manual do Java

    The post Como criar um arquivo appeared first on Aprenda Java.

    ]]>
    https://www.feltex.com.br/felix/como-criar-um-arquivo-2/feed/ 0