我们碰巧通过Hibernate使用HikariCP通过JPA进行连接池,但是我们的框架以相当抽象的方式进行了设置。要创建EntityManager,我们在属性Map中设置hibernate.connection.[url/username/password]
,然后调用Persistence.createEntityManagerFactory("PersistenceUnit", propertiesMap);
我们的persistence.xml具有:
<persistence-unit name="PersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL57InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.cache.use_second_level_cache" value="false"/>
<property name="hibernate.connection.provider_class" value="org.hibernate.hikaricp.internal.HikariCPConnectionProvider"/>
</properties>
</persistence-unit>
我知道通过此方法返回的EntityManagerFactory和EntityManagers是通过HikariCP进行池化的,但是我们正在尝试调试一些事情,并希望了解我们所有实际的HikariCP配置值。我只是想不通如何刺穿抽象并获得任何具体的实现对象。
理想情况下,我想知道人们通常是如何通过JPA API检索此信息的,但是我将解决所有转储HikariCP当前设置的技巧。