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

为什么Hibernate不需要参数构造函数?

东门秦迟
2023-03-14
问题内容

必须使用无参数构造函数(像Hibernate这样的工具会在此构造函数上使用反射来实例化对象)。

我得到了这个手挥手的答案,但是有人可以进一步解释吗?谢谢


问题答案:

hibernate,并且通常通过反射创建对象的代码Class<T>.newInstance()用于创建类的新实例。此方法需要一个公共的无参数构造函数才能实例化该对象。对于大多数用例,提供无参数构造函数不是问题。

有一些基于序列化的技巧可以解决没有no-arg构造函数的问题,因为序列化使用jvm
magic创建对象而无需调用构造函数。但这并非在所有VM上都可用。例如,XStream可以创建没有公共no-
arg构造函数的对象实例,但只能通过在所谓的“增强”模式下运行,该模式仅在某些VM上可用。(有关详细信息,请参见链接。)Hibernate的设计人员肯定会选择保持与所有VM的兼容性,因此避免了此类技巧,并使用了正式支持的反射方法Class<T>.newInstance(),该方法需要无参数的构造函数。



 类似资料:
  • 问题内容: 我对此代码有疑问:https : //github.com/reactjs/redux/blob/master/examples/async/containers/App.js 特别: 我猜这是一个两部分的问题。 为什么我需要将句柄更改设置为类的实例,我不能只对handleChange使用静态函数并直接在类中调用它 ? 我不知道这是怎么回事: 谢谢 问题答案: 以相反的顺序回答… 返回

  • 我问这个问题是因为在Python和Java中,如果父类构造函数需要0参数,则不需要调用super()。 Javascript 蟒蛇 Java

  • 想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 我问这个问题是因为在Python和Java中,如果父类构造函数需要0参数,则不需要调用super()。 Javascript 蟒蛇 Java语言

  • 问题内容: 使用Promises时,为什么不能在代码库的其他地方触发并定义? 我不明白为什么,应该在声明诺言的地方本地化逻辑。这是疏忽大意,还是强制执行此参数有好处吗? 我相信执行程序功能应该是可选的,并且它的存在应该确定promise是否封装了解决方案。没有这样的授权,promise的可扩展性就更大,因为您不必立即启动异步。承诺也应该是可重置的。这是1档开关,1或0 或。可以附加许多平行和顺序的

  • 问题内容: 这有任何重要目的吗?可以省略吗? 问题答案: 并非总是必要的,但是它确实有其用途。假设我们想在基类上创建一个复制方法。像这样: 现在,当我们创建一个新的并复制它时会发生什么? 该副本不是的实例。这是因为(没有显式检查),我们无法从“基本”类返回副本。我们只能返回。但是,如果我们重置了构造函数: …然后一切都按预期进行:

  • 本文向大家介绍hibernate 实体类必须要有无参构造函数吗?为什么?相关面试题,主要包含被问及hibernate 实体类必须要有无参构造函数吗?为什么?时的应答技巧和注意事项,需要的朋友参考一下 hibernate 中每个实体类必须提供一个无参构造函数,因为 hibernate 框架要使用 reflection api,通过调用 ClassnewInstance() 来创建实体类的实例,如果没