一尘不染

如何获取Hibernate配置属性?

hibernate

我在jpa中使用了hibernate模式,并且使用persistence.xml进行了配置。是否可以从Web应用程序获取hibernate连接属性?

谢谢。


阅读 264

收藏
2020-06-20

共1个答案

一尘不染

可能并非没有反射,而是依靠Hibernate在将来不会破坏您的代码。您需要从SessionFactory获取属性,但是它不是公开的,因此您必须通过反射找到Field,然后使用field.setAccessible获取对其的访问。就像是:

Field f = SessionFactoryImpl.class.getDeclaredField("properties");
f.setAccessible(true);
Properties p = (Properties)f.get(sessionFactory);

然后使用环境中的常量提取相关设置。如果您正在寻找实际的数据库连接设置,而您的应用程序正在使用jndi,则可以使用jndi名称获取数据源,然后检查该数据源以获取连接信息。

对于这种类型的事情,我通常只使用调试器,设置一个断点,然后在变量周围戳入,直到找到信息所在的位置为止。然后查看它是否公开可用,如果不是,请使用反射来获取它。虽然没有保证。

2020-06-20