getSessionFactory().openSession();

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,

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.

[code] 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();
}

}[/code]

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

[code]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();
    }
}

}
[/code]

[quote=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,[/quote]
Nao criaram classe padronizada para nos dar flexibilidade.