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.
Um abraco a todos…
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
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…
[quote=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…
[/quote]
Como eu te disse, essa classe que te passei escreve no arquivo.
Fiz aqui um exemplo pra ti:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class Qualquer {
private void metodoQualquer() {
// InputStream stream = ClassLoader.getSystemResourceAsStream("file.properties");;
File file = new File("file.properties").getAbsoluteFile();
Properties properties = new Properties();
FileInputStream stream = null;
try {
stream = new FileInputStream(file);
properties.load(stream);
} catch (IOException e) {
e.printStackTrace();
}
//Captura o valor da propriedade, através da nome da propriedade no arquivo
String p1 = properties.getProperty("user");
String p2 = properties.getProperty("pass");
System.out.println(p1 + "\n" + p2);
//seta os novos valores nas propriedades do arquivo
properties.setProperty("user", "root");
properties.setProperty("pass", "root");
properties.setProperty("classe", Qualquer.class.getName());
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
//grava os dados no arquivo
properties.store(fos, "Configurações Alteradas:");
fos.close();
}
catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
//Captura o valor da propriedade, através da nome da propriedade no arquivo
p1 = properties.getProperty("user");
p2 = properties.getProperty("pass");
System.out.println(p1 + "\n" + p2);
}
public static void main(String[] args) {
new Qualquer().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.
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 hibernate
Properties p = new Properties();
//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" );
Configuration conf = new Configuration().setProperties( p ); //seta o properties dinamico no configure
factory = 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)…
Tem o link do javaDoc http://www.dil.univ-mrs.fr/~massat/docs/hibernate-3.1/api/org/hibernate/cfg/Configuration.html
Mas use o jpa com o EntityManager que vc vai ver que é melhor.
Espero ter ajudado
Fallow