quinta-feira, 15 de janeiro de 2009

Fabrica de sessoes do hibernate

Me deparei com um problema de como alterar a configuração do hibernate em run, pois o usuário terá a opção de escolher o caminho de instalação do software. Para resolver isso utilizei o arquivo hibernate.cfg.xml somente configuro o path do arquivo do banco de dados em run time. Segue a classe que criei, a fabrica de sessões do hibernate:

public class HibernateUtil {
private static final AnnotationConfiguration cfg =
new AnnotationConfiguration();
private static Session session;

static {
try {
cfg.configure("hibernate.cfg.xml");
File arquiv = new File(cfg.getProperty("nome.banco"));
cfg.setProperty("hibernate.connection.url","jdbc:firebirdsql:localhost/3050:"+arquiv.getAbsolutePath());
session = cfg.buildSessionFactory().openSession();
} catch (Throwable ex) {
System.out.println(ex.getMessage());
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

public static Session getSession(){

if (session == null) {
try {
cfg.configure("hibernate.cfg.xml");
File arquiv = new File(cfg.getProperty("nome.banco"));
cfg.setProperty("hibernate.connection.url","jdbc:firebirdsql:localhost/3050:"+arquiv.getAbsolutePath());
session = cfg.buildSessionFactory().openSession();
}
catch (Exception e) {
System.err.println("Initial SessionFactory creation failed." + e);
throw new ExceptionInInitializerError(e);
}

}
return session;
}
}

Nenhum comentário: