Passar Parametros Dinamicamente para Hibernate.properties

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