O Hibernate 4.3.5 ignora a propriedade de configuração v$session.program
-
26-12-2019 - |
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?
Solução
Eu encontrei a solução.acabei de adicionar hibernate.hikari.dataSource.v$session.program
e hibernate.hikari.dataSource.v$session.username
para minha configuração e tudo funcionou bem.