Passar Parametros Dinamicamente para Hibernate.properties
4 respostas
R
rick1902
Ola pessoal.
A Duvida e a seguinte:
Como passar parametros dinamicamente, para o meu Hibernate.properties, tipo, vamos supor que eu tenha um arquivo .ini que armazenas as informacoes de conexao com o banco, como passar estes valores para o hibernate.properties, tipo, ja tenho o arquivo .ini nao estou conseguindo passar estes valores para o hibernate.properties.
Acho que você teria que criar uma classe que lesse esse arquivo .ini e então escrevesse no arquivo de proriedades.
Acho que de outra forma não tem como. Pra isso vc terá que usar a classe java.util.Properties
R
rick1902
amigo agradeco a dica, eu ja tenho como recuperar os dados do arquivo .ini, a minha duvida e como passar estes dados para o hibernate.properties, tipo a propriedade.url por exemplo como enviar estes dados para ela ?
um abraco…
romarcio
rick1902:
amigo agradeco a dica, eu ja tenho como recuperar os dados do arquivo .ini, a minha duvida e como passar estes dados para o hibernate.properties, tipo a propriedade.url por exemplo como enviar estes dados para ela ?
um abraco…
Como eu te disse, essa classe que te passei escreve no arquivo.
Fiz aqui um exemplo pra ti:
importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Properties;publicclassQualquer{privatevoidmetodoQualquer(){// InputStream stream = ClassLoader.getSystemResourceAsStream("file.properties");;Filefile=newFile("file.properties").getAbsoluteFile();Propertiesproperties=newProperties();FileInputStreamstream=null;try{stream=newFileInputStream(file);properties.load(stream);}catch(IOExceptione){e.printStackTrace();}//Captura o valor da propriedade, através da nome da propriedade no arquivoStringp1=properties.getProperty("user");Stringp2=properties.getProperty("pass");System.out.println(p1+"\n"+p2);//seta os novos valores nas propriedades do arquivoproperties.setProperty("user","root");properties.setProperty("pass","root");properties.setProperty("classe",Qualquer.class.getName());FileOutputStreamfos=null;try{fos=newFileOutputStream(file);//grava os dados no arquivoproperties.store(fos,"Configurações Alteradas:");fos.close();}catch(IOExceptionex){System.out.println(ex.getMessage());ex.printStackTrace();}//Captura o valor da propriedade, através da nome da propriedade no arquivop1=properties.getProperty("user");p2=properties.getProperty("pass");System.out.println(p1+"\n"+p2);}publicstaticvoidmain(String[]args){newQualquer().metodoQualquer();}}
Por exemplo, teria um arquivo aqui com as propriedades user e pass.
!° eu li elas e depois eu alterei, e quando alterei ainda pude criar uma nova propriedade chamada classe.
paulo1911
Olá rick1902,
Isso que vc está querendo se vc mudar as anotaçoes para o JPA vc usa o EntityManagerFactory que recebe um Map<"NomeDaPropriedade","ValorDaPropriedade"> e em tempo de execucao vc consegue reconfigurar seu hibernate.
mas com a classe Configuration do hibernate vc tb consegue:
// JavaDoc da Classe Configuration do hibernatePropertiesp=newProperties();//Seta o valor com o que vier do arquivo .ini Ex p.setProperty("hibernate.connection.url","jdbc:jtds:sqlserver://127.0.0.1:0000;DatabaseName="+databaseName);p.setProperty("hibernate.connection.username","user");p.setProperty("hibernate.connection.password","password");Configurationconf=newConfiguration().setProperties(p);//seta o properties dinamico no configurefactory=conf.configure().buildSessionFactory();
Vc pode criar um objeto Properties setando o nome das propriedades e seus valores e passar isso para o método Configuration().setProperties(Properties p)…