Dúvida com criação de Classe e Hibernate

2 respostas
G

Caros:

Estou com uma dúvida:

Usando o Hibernate, criei uma classe para abrir um arquivo de configuração e buscar os dados de acesso ao banco, como username, senha, URL, etc.

Basicamente, a classe está criada como a seguir:

public class NscHibernate {

private static SessionFactory factory;

static {
    try {
        
        Conf abreConf = new Conf();
        
        Configuration cfg = new Configuration()
            .addResource("Cliente.hbm.xml")
            .setProperty("hibernate.dialect", abreConf.getDialeto() )
            .setProperty("hibernate.connection.driver_class", abreConf.getDriverClass() )
            .setProperty("hibernate.connection.url", abreConf.getHibernateUrl() )
            .setProperty("hibernate.connection.username", abreConf.getUsuario() )
            .setProperty("hibernate.connection.password", abreConf.getSenha() );

        factory = cfg.buildSessionFactory();
        
    } catch (Exception e) {
        e.printStackTrace();
        factory = null;
    }
}

public static Session getSession() {
    return factory.openSession();
}

}

Na chamada da classe, eu uso:

Session sessao = NscHibernate.getSession(); 
        sessao.beginTransaction();

Porém, nesse caso, tenho um problema. Na minha classe, preciso definir qual o arquivo HBM que vou trabalhar, nesse caso, pela linha:

.addResource(“Cliente.hbm.xml”)

Só que isso se torna fixo. Como transformar isso para buscar um parâmetro, já que a classe que criei é uma classe estática?

Agradeço antecipadamente qualquer idéia…

[]s
Rafael

2 Respostas

F

galper, não sei se eu entendi direito, mas vai a sugestão:

Se o arquivo .hbm.xml estiver no mesmo pacote que a classe que ele está mapeando, você pode usar o método .addClass(nomeDaClasse) e passar a classe que você precisar ao invéz de chamar método .addResource() com uma String literal.

Abraço

G

FernandoLima:

Acabei solucionando da seguinte forma, basicamente usando o método que indicou:

Ao invés de:

Configuration cfg = new Configuration()
            .addResource("Cliente.hbm.xml")
            .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
            etc...

Passei a utilizar:

Configuration cfg = new Configuration()
            .addClass(br.com.xxxx.beans.Cliente.class)
            .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
            .etc

Valeu!

Criado 28 de dezembro de 2007
Ultima resposta 2 de jan. de 2008
Respostas 2
Participantes 2