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.