[RESOLVIDO] Como obter connection usando Hibernate para passar para o iReport

4 respostas Resolvido
java
EduGomes

Pessoal, olá mais uma vez.

Passei a manhã toda procurando e não encontrei uma solução para o meu problema.
Estou tentando imprimir um relatório criado no iReport, porém para fazer isso preciso passar 3 informações, que são, caminho do relatório, parâmetro ( se houver ) e a conexão. Ai que surge a minha dúvida. Como que eu obtenho essa conexão sendo que estou utilizando Hibernate 4.3.

Este o código que tenho na minha classe HibernateUtil.

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            Configuration cfg = new Configuration().configure();
            StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
                    .applySettings(cfg.getProperties());

            System.out.println("builder = ");
            System.out.println("cfg = " + cfg);

            return cfg.buildSessionFactory(builder.build());

        } catch (Throwable e) {
            System.out
                    .println("Criação inicial do objeto SessionFactory falhou. Erro: "
                            + e);
            throw new ExceptionInInitializerError(e);
        }

    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

Sou iniciante ainda nessa área de programação, e confesso que me confundi um pouco nessa parte.
Alguem teria alguma sugestão ou conhecimento para compartilhar ?

Obrigado de qualquer forma.

4 Respostas

darlan_machado
Solucao aceita

O hibernate deixou de oferecer a possibilidade de você obter a conexão a partir dele e disponibilizar para quaisquer fins na versão 4…
Logo, você não pode fazer com hibernate.
Ou você cria uma conexão na mão, via JDBC ou opta pelo caminho correto e busca os dados com o hibernate, trata o que for preciso no java e envia para o relatório as informações já formatadas.

EduGomes

Deixa eu ver se entendi, devo fazer tudo no código e depois apenas enviar as informações para serem organizadas e impressas no relatório ?

darlan_machado

Sim!
Seguindo os princípios básicos de uma aplicação nos padrões MVC, oferecer uma conexão direta à base de dados para o iReport quebra as regras: o model nunca pode acessar diretamente a view e vice-versa.

EduGomes

Certo.

Muito obrigado pela ajuda. Vou seguir sua sugestão.

Criado 14 de março de 2019
Ultima resposta 14 de mar. de 2019
Respostas 4
Participantes 2