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
Hibernate – Aprenda Java https://www.feltex.com.br/felix Cursos de java, SQL e Engenharia de Software Tue, 30 Dec 2014 10:44:19 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.1.6 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
    Tutorial de Hibernate https://www.feltex.com.br/felix/tutorial-de-hibernate/ Sat, 01 Mar 2014 00:10:17 +0000 http://feltex.com.br/felix/?p=173 Objetivo O Hibernate é o framework que fornece ferramentas para o mapeamento relacional de objeto (ORM). Este tutorial demonstra o suporte para o framework do Hibernate no IDE Eclipse e como criar os arquivos necessários do Hibernate. Depois de criar …

    Tutorial de Hibernate Read More »

    The post Tutorial de Hibernate appeared first on Aprenda Java.

    ]]>
    Objetivo

    O Hibernate é o framework que fornece ferramentas para o mapeamento relacional de objeto (ORM).
    Este tutorial demonstra o suporte para o framework do Hibernate no IDE Eclipse e como criar os arquivos necessários do Hibernate. Depois de criar objetos Java e configurar a aplicação usar o Hibernate, você cria uma classe de teste para a inclusão e exibição dos dados existentes no Banco de Dados.

    Configuração

    Utilizaremos neste tutorial a versão 4.2.7. Para isso acesse o site oficial do Hibernate: http://www.hibernate.org/
    Link direto: Download
    O arquivo compactado tem várias pastas. A mais importante para nós será a pasta lib\riquered.
    Utilizaremos esses arquivos em nossa aplicação.

     antlr-2.7.7.jar
     dom4j-1.6.1.jar
     hibernate-commons-annotations-4.0.2.Final.jar
     hibernate-core-4.2.7.Final.jar
     hibernate-jpa-2.0-api-1.0.1.Final.jar
     javassist-3.18.1-GA.jar
     jboss-logging-3.1.0.GA.jar
     jboss-transaction-api_1.1_spec-1.0.1.Final.jar
    

    1. Criando Uma aplicação

    Abra o seu eclipse. Acesse o menu File >> Project >> Java project

    Tutorial-Hibernate-1

    [sb_easy_image num=”1″ column=”1″ order=”random” size=”full” link=”lightbox” ids=”248″ ]

    Tutorial-Hibernate-2

    Informe o nome AcademicNet e selecione Finish.

    Tutorial-Hibernate-3

    Tutorial-Hibernate-4

    Teremos o resultado acima.

    Criaremos uma pasta para adicionar os arquivos do Hibernate. Acesse: File >> New >> Folder

    Tutorial-Hibernate-5

    Selecione seu projeto e crie uma Pasta chamada lib.

    Tutorial-Hibernate-6

    Descompacte o arquivo que você fez o download do Hibernate.

    Tutorial-Hibernate-7

    Em seguida copie os arquivos da subpasta “lib/required” para esta pasta que você acabou de criar no projeto.

    Seu projeto ficará assim:

    Tutorial-Hibernate-8

    Agora você deve associar os arquivos ao Build Path do projeto.
    Selecione o seu projeto com o botão direito. Acesse Build Path >> Configure Build Path… Será exibida a seguinte tela:

    Tutorial-Hibernate-9

    Selecione a aba “Libraries”

    Tutorial-Hibernate-10

    Clique no botão “Add JARs…” no canto superior direito. Localize a pasta lib e selecione os arquivos JARS. Selecione OK.

    Tutorial-Hibernate-11

    Tutorial-Hibernate-12

    Selecione o botão “OK” novamente. Agora faremos a codificação do projeto.

    2. Criaremos as classes de Entidade

    Selecione a pasta “src” com botão direito do mouse. New >> Class

    Tutorial-Hibernate-13

    Preencha os campos conforme a imagem abaixo:

    Tutorial-Hibernate-14

    Por fim selecione “Finish”.
    Adicione o seguinte código a sua classe.

    package br.com.curso.entidade;
    
    import java.io.Serializable;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    @Entity
    public class Aluno implements Serializable{
    	private static final long serialVersionUID = -309513637403441918L;
    
    	@Id
    	@GeneratedValue
    	private Long matricula;
    	
    	private String nome;
    	
    	private String telefone;
    
    	public Long getMatricula() {
    		return matricula;
    	}
    
    	public void setMatricula(Long matricula) {
    		this.matricula = matricula;
    	}
    
    	public String getNome() {
    		return nome;
    	}
    
    	public void setNome(String nome) {
    		this.nome = nome;
    	}
    
    	public String getTelefone() {
    		return telefone;
    	}
    
    	public void setTelefone(String telefone) {
    		this.telefone = telefone;
    	}
    
    	@Override
    	public String toString() {
    		return "Aluno [matricula=" + matricula + ", nome=" + nome
    				+ ", telefone=" + telefone + "]";
    	}
    
    }
    

    3. Criaremos a Classe HibernateUtil

    Esta é a classe responsável por pegar a conexão com o Banco de dados.
    Selecione a pasta “src” com botão direito do mouse. New >> Class. Preencha os campos conforme a
    imagem abaixo:

    Tutorial-Hibernate-15

    Insira o código abaixo na classe.

    package br.com.curso.dao;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    import org.hibernate.service.ServiceRegistryBuilder;
    import org.hibernate.tool.hbm2ddl.SchemaExport;
    
    public class HibernateUtil {
    
    	private static SessionFactory sessionFactory = null;
    	private static ServiceRegistry serviceRegistry;
    
    	static {
    		try {
    			sessionFactory = getSessionFactory();
    		} catch (Throwable ex) {
    			System.err.println("Initial SessionFactory creation failed." + ex);
    			throw new ExceptionInInitializerError(ex);
    		}
    	}
    
    	public static SessionFactory getSessionFactory() {
    		if (sessionFactory == null) {
    			Configuration configuration = new Configuration();
    			configuration.configure();
    			serviceRegistry = new ServiceRegistryBuilder().applySettings(
    					configuration.getProperties()).buildServiceRegistry();
    			sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    			sessionFactory.openSession();
    			return sessionFactory;
    		}
    		return sessionFactory;
    	}
    
    	public static Session getSession() {
    		return sessionFactory.openSession();
    	}
    
    	public static void gerarBanco() {
    		// Carrega as configurações do arquivo
    		// hibernate.cfg.xml
    		Configuration conf = new Configuration();
    		conf.configure();
    		SchemaExport se2 = new SchemaExport(conf);
    		// Executa a operação da criação do Banco de Dados
    		se2.create(true, true);
    	}
    
    }
    
    

    4. Criaremos as classes DAO

    Selecione a pasta “src” com botão direito do mouse. New >> Class. Preencha os campos conforme a imagem abaixo:

    Tutorial-Hibernate-16

    Insira o código abaixo na classe.

    package br.com.curso.dao;
    
    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.curso.entidade.Aluno;
    
    public class AlunoDAO {
    
    	private Session session;
    
    	public void incluir(Aluno aluno) {
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			session.save(aluno);
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    	}
    
    	public void alterar(Aluno aluno) {
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			session.merge(aluno);
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    	}
    
    	public void excluir(Aluno aluno) {
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			session.delete(aluno);
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    	}
    
    	public Aluno consultar(int codigo) {
    		Aluno retorno = new Aluno();
    		try {
    			session = HibernateUtil.getSession();
    			session.beginTransaction();
    			retorno = (Aluno) session.get(Aluno.class, codigo);
    			session.getTransaction().commit();
    		} catch (Exception e) {
    			session.getTransaction().rollback();
    			e.printStackTrace();
    		} finally {
    			session.close();
    		}
    		return retorno;
    	}
    
    	@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();
    	}
    }
    


    5. Criaremos as classes de Teste

    Selecione a pasta “src” com botão direito do mouse. New >> Class. Preencha os campos conforme a imagem abaixo:

    Tutorial-Hibernate-17

    Por fim selecione “Finish”.

    Insira o código abaixo na classe.

    
    package br.com.curso.teste;
    
    import java.util.List;
    
    import br.com.curso.dao.AlunoDAO;
    import br.com.curso.entidade.Aluno;
    
    public class AlunoTeste {
    
    	public static void main(String[] args) {
    		new AlunoTeste().incluirAluno();
    	}
    
    	
    
    	public void incluirAluno() {
    		System.out.println(this.getClass() + "Inicio");
    
    		try {
    			// Cria a instância de um classe de acesso a Dados
    			AlunoDAO dao = new AlunoDAO();
    	
    
    			//Cria um objeto aluno informando apenas o nome
    			Aluno aluno1 = new Aluno();
    			aluno1.setNome("Jose da Silva");
    			
    			//Cria um objeto aluno informando apenas o nome
    			Aluno aluno2 = new Aluno();
    			aluno2.setNome("Maria da Silva");
    			
    			//Realiza a inclusão de um aluno
    			dao.incluir(aluno1);
    			
    			//Realiza a inclusão de um aluno
    			dao.incluir(aluno2);
    			
    			
    			// Consulta a lista de usuários cadastrados no Banco
    			List listaAluno = dao.listar();
    			
    			
    			
    			// Realiza um loop para exibir todos os registro existentes no Banco de dados
    			System.out.println("==================  Alunos Cadastrados ============================");
    			for (Aluno a : listaAluno) {
    				System.out.println(a);
    			}
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		System.out.println(this.getClass() + "Fim");
    	}
    }
    

    6. Criaremos o arquivo de configuração do Hibernate

    Selecione a pasta “src” com botão direito do mouse. New >> Other.. >> XML >> XML File. Preencha os campos conforme a imagem abaixo:

    Tutorial-Hibernate-18

    Tutorial-Hibernate-19

    Por fim selecione “Finish”.

    Insira o código abaixo no arquivo “hibernate.cfg.xml”. Nesse arquivos temos as seguintes dados:

    
    
    
    
    	
    		
    		org.postgresql.Driver
    		jdbc:postgresql://localhost:5432/BDAcademicNet
    		postgres
    		teco01
    		
    		
    		
    		org.hibernate.dialect.PostgreSQLDialect
    		true
    		true
    		20
    
    		update
    				
    		
    				
    						
    	
    
    

    Conexão com o banco de dados:

    7. Adicionar o Driver de Banco de Dados

    Neste nosso exemplo utilizaremos o Banco PostgreSQL. Para isso devemos ter o Driver específico de cada banco de dados.
    O Site oficial do PostgreSQL é esse http://jdbc.postgresql.org/download.html. Acesse e conheça um pouco mais sobre este banco. Faça o Download o Manual do usuário para consultar quando tiver dúvidas.

    Link Direto para baixar o driver de banco de dados: http://jdbc.postgresql.org/download/postgresql-
    9.3-1100.jdbc4.jar
    Salve o arquivo diretamente na pasta lib criada em nosso projeto.
    Em seguida é necessário fazer o apontamento do arquivo no projeto.

    Tutorial-Hibernate-20

    Selecione o seu projeto com o botão direito. Acesse Build Path >> Configure Build Path… Será exibida a seguinte tela:

    Tutorial-Hibernate-21

    Selecione a Aba “Libraries”

    Tutorial-Hibernate-22

    Tutorial-Hibernate-23

    Clique em OK.

    8. Criaremos o Banco de Dados

    É necessário criar o banco de dados para que o Hibernate consiga criar as estruturas de tabelas. Abra o pgAdminIII.

    Selecione o servidor com um duplo clique. Selecione o nó Database com o botão direito >> “New Data Base”.
    Digite o nome do nosso banco de dados “BDAcademicNet”

    Tutorial-Hibernate-24

    Tutorial-Hibernate-25

    Selecione “OK”

    Seu banco estará criado.

    Tutorial-Hibernate-26

    Vá ao Eclipse selecione a sua classe AlunoTeste com o botão direito

    Selecione “Run As”  >> Java Application.

    Na console deverá aparecer um resultado parecido com esse na console.

    
    Hibernate:
    select
    nextval ('hibernate_sequence')
    Hibernate:
    insert
    into
    Aluno
    (nome, telefone, matricula)
    values (?, ?, ?)
    Hibernate:
    select
    nextval ('hibernate_sequence')
    Hibernate:
    insert
    into
    Aluno
    (nome, telefone, matricula)
    values
    (?, ?, ?)
    Hibernate:
    select
    this_.matricula as matricul1_0_0_,
    this_.nome as nome2_0_0_,
    this_.telefone as telefone3_0_0_
    from
    Aluno this_
    ================== Alunos Cadastrados ============================
    Aluno [matricula=1, nome=Jose da Silva, telefone=null]
    Aluno [matricula=2, nome=Maria da Silva, telefone=null]
    class br.com.curso.teste.AlunoTesteFim
    
    

    9. Veremos o resultado no Banco de Dados

    Selecione o seu banco de dados no pgAdmin III. E clique no botão (exibido na barra de menu superior) com uma lupa escrita “SQL”.

    Tutorial-Hibernate-27

    Na tela exibida escreva o seguinte comando: Select * from aluno;
    Deverá aparecer o resultado conforme a imagem abaixo:

    Pronto! Se você seguiu o passo-a-passo. Estará tudo funcionando!
    Vida que segue!

    Se houve problemas na sua execução, então vamos analisar os mais comuns e suas soluções.
    10. Erros Possíveis


    Initial SessionFactory creation
    failed.org.hibernate.service.classloading.spi.ClassLoadingExcep
    tion: Specified JDBC Driver org.postgresql.Driver could not be
    loaded
    java.lang.NullPointerException
    at br.com.curso.dao.AlunoDAO.incluir(AlunoDAO.java:27)
    at
    br.com.curso.teste.AlunoTeste.incluirAluno(AlunoTeste.java:26)
    at br.com.curso.teste.AlunoTeste.main(AlunoTeste.java:9)

    Motivo:

    O Driver do Banco de dados não foi
    adicionado. Veja o passo “Adicionar o
    Driver de Banco de Dados”


    "ERROR: HHH000299: Could not complete schema update
    org.postgresql.util.PSQLException: FATAL: banco de dados
    "BDAcademicNet" n?o existe"

    Motivo:
    Você não criou o banco de Dados no PostgreSQL


    ERROR: HHH000299: Could not complete schema update
    org.postgresql.util.PSQLException: FATAL: autenticação do tipo
    password falhou para usu?rio "postgres"

    Motivo:
    Verifique se o usuário e senha no arquivo “hibernate.cfg.xml” conferem
    com a identificação do seu banco de dados.
    Propriedades:
    hibernate.connection.username
    hibernate.connection.password


    org.postgresql.util.PSQLException: A tentativa de conexão
    falhou.

    Motivo:
    Veja no arquivo “hibernate.cfg.xml” se a propriedade hibernate.connection.url está com as configurações de acesso ao seu
    banco de dados corretamente. Deve ser: jdbc:postgresql://localhost:5432/BDAcademicNet

    The post Tutorial de Hibernate appeared first on Aprenda Java.

    ]]>