Conexão dinamica com HIBERNATE [RESOLVIDO]

5 respostas
Vinny

Tem como eu definir um caminho dinamico do meu banco de dados no hibernate?
Algum comando que retorne o caminho das classe, um comando que funcione dentro do XML, pq assim eu posso estar definindo
um caminho dinamico, não importando onde minha aplicação tá ela vai roda sem problemas!

a URL abaixo esta definida em um local fixo eu queria que pudesse mudar de acordo de onde tiver meu jar.

<property name="hibernate.connection.url">jdbc:firebirdsql:localhost/3050:D:/Meus Documentos/NetBeansProjects/MIC CENTER/Archives/DB/DBMC.FDB</property>

5 Respostas

Vinny

Será que não tem geito?
Por favor ajuda ae galera
preciso saber se existe algum comando pra mim faze a conexão com o banco de qualquer lugar que ele esteja, sem definir um lugar padrão!

jorgelibanori

Cara, primeiro seria interessante vc adicionar um alias para seu bd. vai na pasta aonde está instalada o firebird e configure o arquivo alias.conf, lá tem a sintaxe da configuração… isso ja matava um problema, pois depois seria apenas necessario passar o nome do bd e não o caminho da pasta… ficaria assim:

jdbc:firebirdsql:localhost/3050:DBMC

Um sugestão apenas.

abraço!

boneazul

Vinny:
Será que não tem geito?
Por favor ajuda ae galera
preciso saber se existe algum comando pra mim faze a conexão com o banco de qualquer lugar que ele esteja, sem definir um lugar padrão!

No hibernate tem como sim…voce tem que fazer programaticamente…ou seja usando api…eu so num lembro os trechos de codigo…da uma pesquisada na net ai…
é algo no pacote Annotation do hibernate…em que voce passa os parametros que desejar sem usar nada fixo no hibernate.cfg.xml…

Vinny

Bom obrigado pela dica
Consegui fazer programaticamente mesmo
minha solução foi a seguinte:

public class HibernateUtil {
    private static String caminho = System.getProperty("user.dir").replace("\\", "/")+"/Archives/DB/DBMC.FDB";
    private static String url;
    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory from standard (hibernate.cfg.xml) 
            // config file.
            
            if (!Character.isDigit(caminho.charAt(0)) && caminho.charAt(1)==':'){
                url = "jdbc:firebirdsql:localhost/3050:"+caminho;
                frmPrincipal.gravaArq();
            }else{
                String txt = caminho;
                String line = null;
                txt = txt.replace("//", "");
                txt = txt.substring(0,txt.indexOf("/"));
                try {
                    FileInputStream stream = null;
                    stream = new FileInputStream(System.getProperty("user.dir").replace("\\", "/")+"/Archives/DB/config.txt");
                    InputStreamReader streamReader = new InputStreamReader(stream);
                    BufferedReader reader = new BufferedReader(streamReader);
                    line = reader.readLine();
                } catch (IOException ex) {
                    Logger.getLogger(HibernateUtil.class.getName()).log(Level.SEVERE, null, ex);
                }
                url = "jdbc:firebirdsql:"+txt+"/3050:"+line.replace("/", "\\");
            }
            
            System.out.println(url);
            Configuration cfg = new Configuration()
            .setProperty("hibernate.dialect",
                         "org.hibernate.dialect.FirebirdDialect")
            .setProperty("hibernate.connection.driver_class",
                         "org.firebirdsql.jdbc.FBDriver")
            .setProperty("hibernate.connection.url",
                         url)
            .setProperty("hibernate.connection.username", "SYSDBA")
            .setProperty("hibernate.connection.password", "*****")
            .setProperty("hibernate.connection.autocommit", "true")
            .setProperty("hibernate.show_sql", "true")
            .addResource("hibernate/entity/Agenda.hbm.xml")
            .addResource("hibernate/entity/Bancos.hbm.xml")
            .addResource("hibernate/entity/Categorias.hbm.xml")
            .addResource("hibernate/entity/Chamadas.hbm.xml")
            .addResource("hibernate/entity/Cidades.hbm.xml")
            .addResource("hibernate/entity/Comentarios.hbm.xml")
            .addResource("hibernate/entity/Compras.hbm.xml")
            .addResource("hibernate/entity/ComprasProdutos.hbm.xml")
            .addResource("hibernate/entity/ConfigFuncionario.hbm.xml")
            .addResource("hibernate/entity/ContasPagar.hbm.xml")
            .addResource("hibernate/entity/ContasReceber.hbm.xml")
            .addResource("hibernate/entity/Equipamentos.hbm.xml")
            .addResource("hibernate/entity/Estados.hbm.xml")
            .addResource("hibernate/entity/Funcionarios.hbm.xml")
            .addResource("hibernate/entity/Orcamentos.hbm.xml")
            .addResource("hibernate/entity/OrcamentosProdutos.hbm.xml")
            .addResource("hibernate/entity/OrcamentosServicos.hbm.xml")
            .addResource("hibernate/entity/OrdensServico.hbm.xml")
            .addResource("hibernate/entity/OrdensServicoProdutos.hbm.xml")
            .addResource("hibernate/entity/OrdensServicoServicos.hbm.xml")
            .addResource("hibernate/entity/OrdensServicoSituacao.hbm.xml")
            .addResource("hibernate/entity/Pedidos.hbm.xml")
            .addResource("hibernate/entity/PedidosProdutos.hbm.xml")
            .addResource("hibernate/entity/Pessoas.hbm.xml")
            .addResource("hibernate/entity/Pfisicas.hbm.xml")
            .addResource("hibernate/entity/Pjuridicas.hbm.xml")
            .addResource("hibernate/entity/Produtos.hbm.xml")
            .addResource("hibernate/entity/Servicos.hbm.xml")
            .addResource("hibernate/entity/Situacao.hbm.xml")
            .addResource("hibernate/entity/Vendas.hbm.xml")
            .addResource("hibernate/entity/VendasProdutos.hbm.xml")
            .addResource("hibernate/entity/VendasServicos.hbm.xml");
            
            sessionFactory = cfg.buildSessionFactory();
//            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Log the exception. 
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
_Zell_

Galera, to passando aqui só para atualizar o tópico e passar a dica de um dos nossos usuário aqui do GUJ.
Através da dica do Rafael Guerreiro eu mapeei minhas classes de entidade:

/**
	 * Inicializa mapa de dados do Hibernate.
	 * 
	 * @author Zell Ruskea
	 * */
	public static void bootMappingDataBase() {
		
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
		cfg.setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/pollo");
		cfg.setProperty("hibernate.connection.username", "root");
		cfg.setProperty("hibernate.connection.password", "root");
		cfg.setProperty("connection.pool_size", "1");
		cfg.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");  
		cfg.setProperty("show_sql", "false");
		cfg.setProperty("hibernate.archive.autodetection", "class, hbm"); 
		
		cfg.addAnnotatedClass(FinancialLaunch.class);
        cfg.addAnnotatedClass(Address.class);
        cfg.addAnnotatedClass(Schedule.class);
        cfg.addAnnotatedClass(ScheduleCategory.class);
        cfg.addAnnotatedClass(ScheduleException.class);
        cfg.addAnnotatedClass(Discipline.class);
        cfg.addAnnotatedClass(Furniture.class);
        cfg.addAnnotatedClass(Graduation.class);
        cfg.addAnnotatedClass(Material.class);
        cfg.addAnnotatedClass(Course.class);
        cfg.addAnnotatedClass(CourseDiscipline.class);
        cfg.addAnnotatedClass(Professor.class);
        cfg.addAnnotatedClass(Room.class);         
        cfg.addAnnotatedClass(Student.class);
        cfg.addAnnotatedClass(StudentFrequence.class);
        cfg.addAnnotatedClass(StudentRating.class);
        cfg.addAnnotatedClass(StudentNote.class);
        cfg.addAnnotatedClass(StudentCourse.class);
        cfg.addAnnotatedClass(StudentClass.class);
        cfg.addAnnotatedClass(StudentFinanceResponsible.class);
        cfg.addAnnotatedClass(StudentEvent.class);
        cfg.addAnnotatedClass(Event.class);
        cfg.addAnnotatedClass(KeyCode.class);
        cfg.addAnnotatedClass(SysUser.class);
        cfg.addAnnotatedClass(SysRigth.class);
        cfg.addAnnotatedClass(BoxFlow.class);
        cfg.addAnnotatedClass(BoxFlowRegistry.class);
        cfg.addAnnotatedClass(FinanceControl.class);
        cfg.addAnnotatedClass(Account.class);
        cfg.addAnnotatedClass(Color.class);
        cfg.addAnnotatedClass(StudentSituation.class);
        cfg.addAnnotatedClass(FrequenceSituation.class);
        cfg.addAnnotatedClass(Propertie.class);
        cfg.addAnnotatedClass(Inconsistencie.class);
        cfg.addAnnotatedClass(Report.class);
        cfg.addAnnotatedClass(Teaching.class);
        cfg.addAnnotatedClass(Annex.class);
        cfg.addAnnotatedClass(TeachingInstance.class);
        cfg.addAnnotatedClass(AnnexInstance.class);
        cfg.addAnnotatedClass(Statistic.class);
        cfg.addAnnotatedClass(ProfessorPayment.class);
        cfg.addAnnotatedClass(Payment.class);
        cfg.addAnnotatedClass(PaymentAppends.class);
  		cfg.addAnnotatedClass(PaymentType.class);
  		cfg.addAnnotatedClass(PaymentRule.class);
  		cfg.addAnnotatedClass(PaymentAppendsModel.class);  
		
//		sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
		sessionFactory = cfg.buildSessionFactory();
		session = sessionFactory.openSession();
	}
Criado 7 de maio de 2010
Ultima resposta 23 de jan. de 2013
Respostas 5
Participantes 4