getSessionFactory().openSession();

2 respostas
F

Olá gujerios,

Estou estudando o livro Hibernate em ação segunda edição revisada, como ele não te ensina a baixar os .jars, acabei baixando em tutoriais da internet, até aí beleza, mas houve uma dúvida no livro aparece um código:

Session session = getSessionFactory().openSession();

que no Eclipse juno aparece com erro no método getSessionFactory() sublinhado em vermelho, aí comecei buscar na internet uma solução e vi que muita gente cria uma classe chamada HibernateUtil colocando esse método, porém achei meio estranho isso, gostaria de saber porque quem criou o Hibernate não se preocupou em padronizar a Sessão? ou preferiu que nós criássemos uma classe para resolver esse problema?

abraço,

2 Respostas

W

Boa tarde então eu nao sei responder sua pergunta mais no uso de hibernate eu faço assim:

Crio duas classes uma que é a própria sessão e a hibernate util que é aonde tem update e para apagar objetos.

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class Sessao {

    private static SessionFactory Sessao;

    static {
        try {
            Sessao = new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Session getSessao() {
        return Sessao.openSession();
    }
}

Bem eu uso assim nao sei se é o modo correto de usar vlw.

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;


public class HibernateUtil {

    private Session sessao;
    private Transaction transacao;
    private Query query;


    public void insertUpdate(Object object) {
        try {
            this.sessao = Sessao.getSessao();
            transacao = sessao.beginTransaction();
            sessao.saveOrUpdate(object);
            transacao.commit();
            sessao.close();
            JOptionPane.showMessageDialog(null, "Registro salvo com sucesso!",
                    null, JOptionPane.INFORMATION_MESSAGE);
        } catch (HibernateException e) {
            JOptionPane.showMessageDialog(null, "Erro ao persistir os dados.\n" + e.getMessage(), null, JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
        }
    }

    public void delete(Object object) {
        try {
            this.sessao = Sessao.getSessao();
            transacao = sessao.beginTransaction();
            sessao.delete(object);
            transacao.commit();
            sessao.close();
            JOptionPane.showMessageDialog(null, "Registro deletado com sucesso!", null, JOptionPane.INFORMATION_MESSAGE);
        } catch (HibernateException e) {
            JOptionPane.showMessageDialog(null, "Erro ao deletar registro.\n" + e.getMessage(), null, JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
        }

    }
    
     public void insert(Object object) {
        try {
            this.sessao = Sessao.getSessao();
            transacao = sessao.beginTransaction();
            sessao.saveOrUpdate(object);
            transacao.commit();
            sessao.close();
        } catch (HibernateException e) {
            JOptionPane.showMessageDialog(null, "Erro ao persistir os dados.\n" + e.getMessage(), null, JOptionPane.ERROR_MESSAGE);
            e.printStackTrace();
        }
    }
    
}
J

Freak_266:
Olá gujerios,

Estou estudando o livro Hibernate em ação segunda edição revisada, como ele não te ensina a baixar os .jars, acabei baixando em tutoriais da internet, até aí beleza, mas houve uma dúvida no livro aparece um código:

Session session = getSessionFactory().openSession();

que no Eclipse juno aparece com erro no método getSessionFactory() sublinhado em vermelho, aí comecei buscar na internet uma solução e vi que muita gente cria uma classe chamada HibernateUtil colocando esse método, porém achei meio estranho isso, gostaria de saber porque quem criou o Hibernate não se preocupou em padronizar a Sessão? ou preferiu que nós criássemos uma classe para resolver esse problema?

abraço,


Nao criaram classe padronizada para nos dar flexibilidade.

Criado 24 de fevereiro de 2013
Ultima resposta 25 de fev. de 2013
Respostas 2
Participantes 3