Alterar url do hibernate.cfg.xml em Run

3 respostas
homisinho

Estou com uma dúvida na forma correta de fazer a configuração do hibernate.

Tenho uma aplicação j2SE na qual estou utilizando o hibernate, tenho um arquivo hibernate.cfg.xml, e preciso alterar dados do mesmo.

Digamos que eu faça a instalação do meu sistema e o meu cliente instale o software em C:\temp, eu teria que mudar
<property name=“hibernate.connection.url”>jdbc:firebirdsql:localhost/3050:D:\BANCO.FDB</property>

para a linha:

<property name=“hibernate.connection.url”>jdbc:firebirdsql:localhost/3050:C:\temp\BANCO.FDB</property>

Como eu posso fazer isso?
Ou eu devo deixar o arquivo hibernate.cfg.xml de lado e configurar o hibernate via código, já vi que isso é possível!

Desde já obrigado.

3 Respostas

homisinho

Devo usar o hibernate.properties ???

Tem alguma forma de alterar o hibernate.cfg.xml???

Ou quem sabe fazer isso via codigo java mesmo???

Tem alguns materiais que falam para utilizar o hibernate.proprties, pois esse arquivo eu posso alterar!

Como a maioria de vocês que distribuem programas fazem isso?

homisinho

Bom, fiz da seguinte forma:

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);
      }
     }
     
/**
 * Retorna uma sessão ativa;<br>
 * Caso não tenha uma sessao ativa seta um AnnotationConfiguration com as configurações e
 * cria uma nova sessao;
 *
 * @return org.hibernate.Session
 */
       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;
     }
}

Não sei se é a forma correta. Vou utilizar um hibernate.cfg.xml com as configurações e coloquei o nome do banco dentro dele tbm, assim quanto trocar o nome do banco ou usuario e senha altero somente no arquivo xml e não altero nada no meu codigo. Utilizei um File pra buscar o caminho da minha pasta raiz pois o arquivo xml se encontra em tal local.

moacirjava

Homisinho, na linha onde você executa a seguinte linha de código:

File arquiv = new  File(cfg.getProperty("nome.banco"));

Você está buscando por uma tag e alterando seu conteúdo, correto? Gostaria de ver essa tag, será que você poderia enviar esse arquivo do hibernate.cfg por favor? Vou te mandar uma msg privada com meu email.

Criado 14 de janeiro de 2009
Ultima resposta 10 de jul. de 2010
Respostas 3
Participantes 2