Static {}

2 respostas
C

Olá gostaria de saber o que o bloco static {} faz, como no código abaixo [um exemplo de HibernateUtil.java]:

package br.com.oxygen.hibernate;

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

/**
 * Created by IntelliJ IDEA.
 * User: CodeWarrior
 * Date: 19/09/2008
 * Time: 18:59:08
 * Obs: Classe responsável pelo gerenciamento das seasons (conexões com o Banco de Dados)
 */

public class HibernateUtil {
    //Global vars
    private static SessionFactory factory;

    //Getters ans Setters


    //Default Constructor


    //Methods
    static {
        try {
            //Cria uma nova fábrica de conexões já configurada
            factory = new Configuration().configure().buildSessionFactory();
        } catch (Exception e) {
            System.out.println("Erro ao pegar criar uma conexão! Fábrica está em greve!");
            e.printStackTrace();

            //Garante uma fábrica vazia caso dê algo errado.
            factory = null;
        }
    }

    //Retorna uma sessão já configurada
    public static Session getSession() {
        return factory.openSession();
    }
}

2 Respostas

kaique

No momento que você carrega a classe HibernateUtil na memória, o bloco estático é executado, fazendo com que uma instância da classe SessionFactory seja criada. Provavelmente será a única instância usada durante toda a aplicação.

[]'s.

tnaires

Só um alerta: cuidado com esse código, pois se a fábrica não for criada com sucesso, seu método getSession() retornará null às classes que o utilizarem. Isso pode fazer com que seu sistema gere uma NullPointerException difícil de verificar.

Criado 21 de setembro de 2008
Ultima resposta 22 de set. de 2008
Respostas 2
Participantes 3