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:
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.
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
private static final SessionFactory sessionFactory;
private static final ThreadLocal threadLocal =
new ThreadLocal();
/* 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
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:
org.gjt.mm.mysql.Driver
jdbc:mysql://localhost/livraria
camilo
integrator
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.
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