Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

É possível alterar as configurações do Hibernate?

Olá!!!

Estou tentando apontar os testes para um outro banco de dados, mas não encontro onde posso alterar a configuração do Hibernate no projeto pm73-dao.

Tem como fazer isso ou a implementação é restrita ao HSQLDB?

7 respostas

As configurações são feitas no arquivo "persistence.xml", e você pode utilizar diversas bases de dados diferentes, basta ter o driver.

Skywalker, valeu pelo retorno!

Mas não encontrei esse arquivo no projeto. Alguns fóruns também falam sobre "persistence.cfg.xml", ou que ele deveria estar na /src, mas não encontrei esse arquivo também.

Geralmente fica na pasta META-INF, e a sua localização vai depender um pouco de como você criou o projeto. Geralmente uso maven para criar os projetos, que cria a pasta em src/main/resources.

Qual sistema operacional você está usando? Se for mac-os ou algum linux pode usar o comando

find -name persistence.xml 

no diretório raíz do seu projeto.

Skywalker, estou usando o Windows. Rodei uma busca pelo Everything mas não achou esse arquivo.

O projeto foi disponibilizado pelo Alura na primeira aula do curso de Testes de Integração: http://s3.amazonaws.com/caelum-online-public/PM-73/pm73-dao.zip

Ps.: Everything = https://www.voidtools.com/

solução!

Ok, entendi. Eu achava que se tratava de um projeto jpa, mas não era o caso, e por isso não tinha o arquivo persistence.jpa. A configuração do banco de dados está sendo feita na classe CriadorDeSessoes. Lá você pode alterar as configurações com os mesmos parâmetros que usaria num arquivo de persistence.xml. Adicionei o driver do postgres no BuildPath do projeto e fiz o teste depois de alterar o método getConfig e funcionou.:

public Configuration getConfig() {
        if(config == null) {
            config = new AnnotationConfiguration()
            .addAnnotatedClass(Lance.class)
            .addAnnotatedClass(Leilao.class)
            .addAnnotatedClass(Usuario.class)
            .setProperty("hibernate.connection.driver_class", "org.postgresql.Driver")
            .setProperty("hibernate.connection.url", "jdbc:postgresql://localhost/caelum")
            .setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect")
            .setProperty("hibernate.connection.username", "caelum")
            .setProperty("hibernate.connection.password", "")
            .setProperty("hibernate.show_sql", "true");
        }
        return config;
    }

(claro que antes eu criei o usuário caelum e a tablea caelum na base de dados com as devidas permissões.)

Boa Skywalker!!

Tava na minha cara, acho que faltou procurar um pouco... rs.

Muito obrigado pela ajuda!!