jrtm
Outubro 10, 2008, 1:05pm
#1
Olá Pessoal,
estou com uma dúvida aki sobre como acessar o banco de dados e criar a factory utilizando o hibernate.
então já vi que é possivel conectar e indicar as classes a serem persistidas atraves :
via xml(arquivo hibernate.cfg.xml ou hibernate.properties);
2 via classe, utilizando o AnnotationConfiguration e setando as propriedades
ou
Criar o entityManger do JPA(EJB3).
Já decidi que vou mapear meus objetos com o annotation do JPA.
Agora qual dessas 3 opções devo usar para conectar e criar meus pojos.
estou iniciando nessa parte agora e devo fazer toda a arquitetura para o acesso ao banco.
se vcs puderem me ajudar agradeço
vlw galera.
Jonathan Martinez
Bom é um seguinte…
No pacote de codigo-fonte vc tera o hibernate.properties e o log4j.properties
hibernate.properties
Descomenta somente o que vc ira usar exemplo:
## PostgreSQL
hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class org.postgresql.Driver
hibernate.connection.url jdbc:postgresql://localhost:5432/banco
hibernate.connection.username postgres
hibernate.connection.password postgres
log4j.properties não mexe em nada
Cria uma pasta chamada hibernate onde tera as suas classes
hibernateFactory
package hibernate;
/**
*
* @author Diogo
*/
import cliente.bean.Cliente;
import conta.bean.Conta;
import endereco.bean.Endereco;
import fornecedor.bean.Fornecedor;
import funcionario.bean.Funcionario;
import pessoafisica.bean.Pessoafisica;
import pessoajuridica.bean.Pessoajuridica;
import produto.bean.Produto;
import telefone.bean.Telefone;
import usuario.bean.Usuario;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import produto.bean.Produtosfornecidos;
public class HibernateFactory {
private static SessionFactory factory;
static {
AnnotationConfiguration cfg = new AnnotationConfiguration();
cfg.addAnnotatedClass(Conta.class);
cfg.addAnnotatedClass(Cliente.class);
cfg.addAnnotatedClass(Endereco.class);
cfg.addAnnotatedClass(Fornecedor.class);
cfg.addAnnotatedClass(Funcionario.class);
cfg.addAnnotatedClass(Pessoafisica.class);
cfg.addAnnotatedClass(Pessoajuridica.class);
cfg.addAnnotatedClass(Produto.class);
cfg.addAnnotatedClass(Produtosfornecidos.class);
cfg.addAnnotatedClass(Telefone.class);
cfg.addAnnotatedClass(Usuario.class);
factory = cfg.buildSessionFactory();
}
public static Session getSession() {
return factory.openSession();
}
}
E outra chamada Persistencia.java
package hibernate;
import conta.bean.Conta;
import java.io.Serializable;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Restrictions;
/**
*
* @author Diogo
*/
public class PersistenciaDAO {
public PersistenciaDAO(){
}
public void salvar(Object object) throws Exception{
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
try{
session.saveOrUpdate(object);
session.flush();
transaction.commit();
}finally{
session.close();
}
}
public void deletar(Object object) throws Exception{
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
session.delete(object);
session.flush();
transaction.commit();
session.close();
}
public void removeByName(String name, Class clazz) {
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
Criteria c = session.createCriteria(clazz);
c.add(Restrictions.eq("nome", name));
session.delete(c.uniqueResult());
session.flush();
transaction.commit();
session.close();
}
public void removeByCodigo(String codigo, Class clazz) {
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
Criteria c = session.createCriteria(clazz);
c.add(Restrictions.eq("codigo", codigo));
session.delete(c.uniqueResult());
session.flush();
transaction.commit();
session.close();
}
public Object buscar(Class clazz,Integer pk) throws Exception {
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
try {
Serializable obj = (Serializable) session.get(clazz, pk );
session.flush();
transaction.commit();
return obj;
} finally {
session.close();
}
}
public Conta buscarByCodigo(Conta conta) throws Exception{
Session session = HibernateFactory.getSession();
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Conta.class);
criteria.add(Expression.eq("conta.codigo", conta.getCodigo()));
return (Conta) criteria.list();
}
}
Apos isso será nescessario mapear seu bean
@Entity
@Table(name = "cliente")
public class Cliente implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name = "idcliente", nullable = false)
private Long idcliente;
@Column(name = "ramodeatividade", nullable = false)
private String ramodeatividade;
@JoinColumn(name = "idconta", referencedColumnName = "idconta")
@ManyToOne
private Conta idconta;
Espero ter te ajudado…