Alterar url do hibernate.cfg.xml em Run

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.

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?

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.

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.