java Hibernate和noarg构造函数
正如我们所看到的hereHibenate不需要所有@Entity
类的arg构造函数。但java类总是隐式地使用默认构造函数,即使我们没有显式地声明默认构造函数,这难道不是真的吗
在我的项目中,我没有在我的@Entity
类中声明一个无参数构造函数,而且一切都正常。但另一方面,我想Hibernate规范编写得很仔细,所以实际上明确声明默认构造函数可能有一些好处
你可以在下面搜索框中键入要查询的问题!
正如我们所看到的hereHibenate不需要所有@Entity
类的arg构造函数。但java类总是隐式地使用默认构造函数,即使我们没有显式地声明默认构造函数,这难道不是真的吗
在我的项目中,我没有在我的@Entity
类中声明一个无参数构造函数,而且一切都正常。但另一方面,我想Hibernate规范编写得很仔细,所以实际上明确声明默认构造函数可能有一些好处
# 1 楼答案
显式地为实体类定义无参数构造函数没有什么特别的好处(但是请记住,Hibernate框架在内部使用无参数构造函数通过Java反射API填充实体)
Hibernate实体Bean类必须不需要arg构造函数,而arg构造函数可以由程序员显式定义(或由Java自动生成)
重要的一点是,当您为类定义自己的构造函数时,您需要自己提供无参数构造函数(因为在这种情况下编译器不提供)
# 2 楼答案
Java类可能没有隐式默认构造函数。 假设您有这样一个类:
最终,唯一的构造函数将是A(String st),而不是A(String st)和A()
# 3 楼答案
在Hibernate中,没有arg构造函数用于通过反射(用于在运行时检查或修改应用程序行为)加载数据库实体
# 4 楼答案
即使对于
Hibernate
,默认无参数构造函数的实现也不是强制性的,因为java会自动隐式地管理它唯一需要指定它的情况是在声明另一个参数化构造函数时
如果您查看The No-Arg Constructor,您将看到:
# 5 楼答案
如果未定义任何构造函数,编译器将生成默认构造函数,如JLS中所述:
这意味着您不必为Hibernate实体显式实现无参数构造函数,只要:
throws
子句李># 6 楼答案
如果创建其他构造函数,java将不会创建隐式构造函数