Pergunta

Anteriormente, usei o hibernate 3.2 e o boneCP, mas acabei de atualizar para o hibernate 4.3.5 e o pool de conexões Hikari para conectar meu aplicativo Java ao meu banco de dados Oracle.Defino v$session.program com o nome do programa desejado e o adiciono à configuração de hibernação.

Eu criei minha própria classe de configuração de hibernação que estende o Configuration classe fornecida pelo hibernate.

public class MyConfiguration extends Configuration {
    private static final long serialVersionUID = 1L;

    public MyConfiguration() { }

    public MyConfiguration(SettingsFactory settingsFactory) {
        super(settingsFactory);
    }

    @Override
    public SessionFactory buildSessionFactory() throws HibernateException {
        ServiceRegistry registry = new StandardServiceRegistryBuilder()
        .applySettings(getProperties()).build();
        return new MySessionFactory(super.buildSessionFactory(registry));
    }
}

O MySessionFactory é um wrapper personalizado para o SessionFactory que faz alguma mágica por meio da reflexão com o campo persistenceContext do SessionImpl (esse deve ser o problema porque também funcionou antes da atualização).

Então eu ligo

Document configDocument = loadHibernateConfigruationDocument();
MyConfiguration conf = new MyConfiguration();
conf.configure(configDocument);
conf.buildSessionFactory();

No entanto, se eu for ao banco de dados (enquanto o aplicativo estiver em execução) e consultar

SELECT MACHINE, PROGRAM, USERNAME, count(*) as COUNT FROM v$session GROUP BY MACHINE, PROGRAM, USERNAME;

Não consigo encontrar o programa que acabei de iniciar.Alguma idéia do que estou fazendo de errado?

Foi útil?

Solução

Eu encontrei a solução.acabei de adicionar hibernate.hikari.dataSource.v$session.programe hibernate.hikari.dataSource.v$session.username para minha configuração e tudo funcionou bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top