Powered by Max Banner Ads 
Home > BD, Hibernate, JPA > Java Básico + Hibernate JPA + Mysql

Java Básico + Hibernate JPA + Mysql


olá Pessoal,
Recebi alguns emails pedindo para criar um post mais puro com Hibernate + JPA, ou seja, sem o uso de JSF. Atendendo aos pedidos, montei um post bem simples, onde vamos criar a nossa velha classe Java com o método main e armazenar as informações em um BD (MySql) tendo o Hibernate como framework de persitencia. Entao se você deseja dar os primeiros passos usando os frameworks: Hibernate + JPA para persistencia de dados nao deixe de ler o post a seguir.
Lets go..
Outros posts.
- JSF + Hibernate + MySql no Eclipse
- Hibernate Annotations + JSF + MySql
- Busca com Hibernate Annotation + JSF
Atenção: Não apresentarei como criar um DB ou configurar o Hibernate no Eclipse. Qualquer dúvida consulte um dos posts acima. Vou considerar que você já tem um ambiente de desenvolvimento pronto para entrar em ação.
Dados do DataBase:

  • Crie um DataBase (usarei uma chamada livraria)
  • crie uma tabela (usarei uma tabela com o nome camilo )
  • Dados da tabela: id(auto_increment), nome(varchar), cidade(varchar)
  • Preparação do projeto
    1.Crie um o Java Project no Eclipse com o nome que achar conveniente.
    2.Agora crie uma estrutura de packages conforme a imagem a seguir

    3.Adicione os arquivos .jars do mysql, hibernate + JPA ao projeto. Clique com o botão direito no projeto escolha Properties e depois clique em JavaBuild. Na tela que aparece clique em Add external jars. (Caso nao tenha uma Library para os .jars )

    Desenvolvimento/Teste
    1.Agora crie uma classe Java com nome de Pessoa no package br.com.bean.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    package br.com.bean;
    /*se os arquivos .jars nao estiver no projeto
     * nao será possivel encontrar os imports
     */
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    @Entity
    @Table(name="camilo")
    public class Pessoa {
     
    	private String nome; 
    	private String cidade; 
    	@Id
    	int id;
    	public String getNome() {
    		return nome;
    	}
    	public void setNome(String nome) {
    		this.nome = nome;
    	}
    	public String getCidade() {
    		return cidade;
    	}
    	public void setCidade(String cidade) {
    		this.cidade = cidade;
    	}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
     
    }

    2.Crie uma classe ConexaoHibert.java no package br.com.conexao

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    private static final SessionFactory sessionFactory;
    	private static final ThreadLocal<Session> threadLocal = 
    		new ThreadLocal<Session>();
    	/* observe o que temos de importante 
    	 * nesse bloco static, o arquivo
    	 * que possui os dados de conexao com 
    	 * o banco de dados hibernateconfig.xml 
    	 */
    	static{
    		try{
    			sessionFactory = new  AnnotationConfiguration().
    			configure("hibernateconfig.xml")
    			.buildSessionFactory();
     
    		}catch (Throwable e) {
    			throw new ExceptionInInitializerError(e);
    		}
    	}
    	//retorna uma sessao de comunicacao com o BD
    	public static Session getInstance(){
    		Session session = (Session) threadLocal.get();
    		session = sessionFactory.openSession();
    		threadLocal.set(session);
    		return session;
    	}

    3.Crie uma class PessoaDAO no package br.com.hibernatedao

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    package br.com.hibernatedao;
     
    import org.hibernate.Session;
    import org.hibernate.Transaction;
     
    import br.com.bean.Pessoa;
    import br.com.conexao.ConexaoHibert;
     
    public class PessoaDAO {
    	private Session session;
     
    	public void Salvar(Pessoa p){
    		//obtem uma sessao
    		session = ConexaoHibert.getInstance();
    		Transaction tx = null; //permite transacao com o BD 
     
    		try{
    			tx = session.beginTransaction();
    			session.save(p);
    			tx.commit();//faz a transacao
    		}catch (Exception e) {
    			e.printStackTrace();
    			//cancela a transcao em caso de falha
    			tx.rollback();
    		}finally{
    			session.close();
    		}}}

    4.Agora crie uma arquivo .xml em source conforme o code abaixo:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
     <session-factory name="">
      <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver
    </property>
      <property name="hibernate.connection.url">jdbc:mysql://localhost/livraria
    </property>
      <property name="hibernate.connection.username">camilo</property>
      <property name="hibernate.connection.password">integrator</property>
      <mapping class="br.com.bean.Pessoa"/>
     </session-factory>
    </hibernate-configuration>

    Fique atento aos nomes usado na class Pessoa.java para fazer anotação. Veja que eu tenho o nome da tabela no BD diferente do nome da minha class Java (fiz de proposito). Então somos obrigado a definir o name da tabela, caso contrario a JPA vai considerar o nome da classe.
    5.Agora crie uma classe no package br.com.teste com o nome de PessoaTest.java.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    package br.com.teste;
     
    import br.com.bean.Pessoa;
    import br.com.hibernatedao.PessoaDAO;
     
    public class PessoaTest {
     
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		Pessoa p = new Pessoa(); 
    		p.setNome("mel"); 
    		p.setCidade("Salvador");
    		PessoaDAO pdao = new PessoaDAO(); 
    			pdao.Salvar(p);	}}

    6.Salve e execute a classe PessoaTest.java e verifique se os dados foram inseridos no BD.

    Pronto!Bem simples não? E menos cansativo que usar o velho padrão DAO. Espero que tenham gostado do post. Abracos e até o proximo post…


    Follow me: http://twitter.com/camilolope

    Related Posts with Thumbnails
    1. Romildo Jozue Paiter
      February 20th, 2010 at 09:30 | #1

      E ai meu amigo todo bem…

      Estou com um probleminha chato com o Hibernate… Literalmente fiz o CRTL+C e CTRL+V.

      E esta dando o seguinte erro:
      2 [main] INFO org.hibernate.cfg.annotations.Version – Hibernate Annotations 3.4.0.GA
      23 [main] INFO org.hibernate.cfg.Environment – Hibernate 3.3.0.SP1
      28 [main] INFO org.hibernate.cfg.Environment – hibernate.properties not found
      32 [main] INFO org.hibernate.cfg.Environment – Bytecode provider name : javassist
      37 [main] INFO org.hibernate.cfg.Environment – using JDK 1.4 java.sql.Timestamp handling
      121 [main] INFO org.hibernate.annotations.common.Version – Hibernate Commons Annotations 3.1.0.GA
      125 [main] INFO org.hibernate.cfg.Configuration – configuring from resource: hibernateconfig.xml
      125 [main] INFO org.hibernate.cfg.Configuration – Configuration resource: hibernateconfig.xml
      Exception in thread “main” java.lang.ExceptionInInitializerError
      at br.com.conexao.ConexaoHibernat.(ConexaoHibernat.java:23)
      at br.com.hiberntedao.PessoaDAO.Salvar(PessoaDAO.java:14)
      at br.com.teste.PessoaTest.main(PessoaTest.java:16)
      Caused by: org.hibernate.HibernateException: hibernateconfig.xml not found
      at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
      at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1439)
      at org.hibernate.cfg.Configuration.configure(Configuration.java:1461)
      at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017)
      at br.com.conexao.ConexaoHibernat.(ConexaoHibernat.java:19)
      … 2 more

      Será que vc pode me dar um help.. Falow Grande abraço.

    2. camilolopes
      February 22nd, 2010 at 05:56 | #2

      parece ser problemas de versao, vc está usando versoes compativeis dos seus arquivos .jar? e outro erro que ele nao encontrou seu arquivo de configuracao do hibernate, observe que o erro eh bem auto-explicativo. Eu no seu lugar baixava o hibernate nao versao beta e a versao jpa. Em um dos meus posts eu coloquei os arquivos ja para download exatos que precisa ter em lib, dar uma olhada ai no blog