我在jpa中使用了hibernate模式,并且使用persistence.xml进行了配置。是否可以从Web应用程序获取hibernate连接属性?
谢谢。
可能并非没有反射,而是依靠Hibernate在将来不会破坏您的代码。您需要从SessionFactory获取属性,但是它不是公开的,因此您必须通过反射找到Field,然后使用field.setAccessible获取对其的访问。就像是:
Field f = SessionFactoryImpl.class.getDeclaredField("properties"); f.setAccessible(true); Properties p = (Properties)f.get(sessionFactory);
然后使用环境中的常量提取相关设置。如果您正在寻找实际的数据库连接设置,而您的应用程序正在使用jndi,则可以使用jndi名称获取数据源,然后检查该数据源以获取连接信息。
对于这种类型的事情,我通常只使用调试器,设置一个断点,然后在变量周围戳入,直到找到信息所在的位置为止。然后查看它是否公开可用,如果不是,请使用反射来获取它。虽然没有保证。