当前位置: 首页 > 面试题库 >

如何获取Hibernate配置属性?

吕宣
2023-03-14
问题内容

我在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名称获取数据源,然后检查该数据源以获取连接信息。

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



 类似资料:
  • 我最近将我的Hibernate版本升级到4.3.4。最终。基于Hibernate的上下文会话配置,这个新版本不再基于ThreadLocal。如果我到目前为止得到的是正确的,我需要做些什么来提高它的效率吗?如果它不正确,我该怎么办?我不知道。 请注意,文档中提到:Hibernate提供了三种当前会话跟踪方法。基于“线程”的方法不适用于生产使用;它只对原型和教程(如本教程)有用。 Hibernate.

  • 我试图创建一个springmvc项目配置与Hibernate使用web.xml 我的问题是,当我运行时,它不会自动创建用户表。 这是我的代码: 文件spring-config.xml 文件web.xml: 文件UserDAO: 文件UserDaoImpl: 文件用户: 这是我的日志:

  • 我正在使用Java的发送SMS。我已经加载了log4j jar文件,并将文件放置在正确的位置,但它仍然无法读取它,并得到以下异常: 例外文本:

  • Oracle正在转向通用连接池(UCP),用于维护可以借用、返回或关闭的池连接。我的webapplication在它自己的数据层中就有了这一点。这个应用程序将迁移到使用Hibernate的JPA。此时,我只能将Hibernate配置为使用Oracle JDBC驱动程序。

  • 问题内容: 在我的应用程序中,我正在使用hibernate模式,以将a与数据库连接并创建会话。这是我的hibernate.cfg.xml文件。还行吧。它工作正常。 但是,当我尝试使用this 读取数据库配置属性时,它显示了Exception,这是我的另一个文件 这是错误 这是我的属性文件,名为 有什么问题吗?如何正确地做到这一点 问题答案: 不是要在文件中使用的有效标签。如果要将所有数据库配置详细

  • 问题内容: 这是MySQL的配置文件: 为SQL Server 2005指定什么?我这样做是这样的: 我的问题更确切地说是如何指定必须连接的数据库? 在MySQL中,我曾经这样做: 问题答案: 特定于数据库的 属性是: :JDBC驱动程序类 :JDBC URL :数据库用户 :数据库密码 :Hibernate的类名,它允许Hibernate生成针对特定关系数据库优化的SQL。 要更改数据库,您必须