Java 调用hibernate session.get方法

Java 调用hibernate session.get方法,java,hibernate,Java,Hibernate,我知道所有这些术语,如新的、暂时的、分离的等。然而,有时我会遇到以下问题: 调用hibernate session.get方法调用时实际会发生什么? -hibernate将使用空构造函数创建实例?? -会调用setter吗 你能谈谈你的想法吗 调用hibernate session.get方法调用时实际会发生什么情况hibernate将使用空构造函数创建实例???-会调用setter吗 对。Hibernate将在获取数据后调用无参数构造函数来创建bean。它将调用setter方法来设置相应的值。

我知道所有这些术语,如新的、暂时的、分离的等。然而,有时我会遇到以下问题:

调用hibernate session.get方法调用时实际会发生什么? -hibernate将使用空构造函数创建实例?? -会调用setter吗

你能谈谈你的想法吗

调用hibernate session.get方法调用时实际会发生什么情况hibernate将使用空构造函数创建实例???-会调用setter吗

对。Hibernate将在获取数据后调用无参数构造函数来创建bean。它将调用setter方法来设置相应的值。这就是为什么hibernate在缺少任何getter/setter时出错的原因

如注释中所述,您可以设置调试点并看到这种情况

调用hibernate session.get方法调用时实际会发生什么情况hibernate将使用空构造函数创建实例???-会调用setter吗

对。Hibernate将在获取数据后调用无参数构造函数来创建bean。它将调用setter方法来设置相应的值。这就是为什么hibernate在缺少任何getter/setter时出错的原因

如注释中所述,您可以设置调试点并看到这种情况

调用hibernate session.get方法时实际会发生什么 调用?-hibernate将使用空构造函数创建实例 ?? - 会调用setter吗

这取决于当前会话是否已管理具有相同PK的实例,以及映射实体的属性是否配置为按属性访问或按字段访问

如果当前会话已管理具有相同PK的实例,则将返回该实例。在这种情况下,不会创建新实例

否则,将通过首先调用空构造函数来创建新实例。然后,将为那些配置为由属性访问的属性调用setter。对于那些配置为通过字段访问的属性,不会调用它们的setter,因为hibernate将直接向这些字段注入值

有关字段访问和属性访问的详细信息,请参见

调用hibernate session.get方法时实际会发生什么 调用?-hibernate将使用空构造函数创建实例 ?? - 会调用setter吗

这取决于当前会话是否已管理具有相同PK的实例,以及映射实体的属性是否配置为按属性访问或按字段访问

如果当前会话已管理具有相同PK的实例,则将返回该实例。在这种情况下,不会创建新实例

否则,将通过首先调用空构造函数来创建新实例。然后,将为那些配置为由属性访问的属性调用setter。对于那些配置为通过字段访问的属性,不会调用它们的setter,因为hibernate将直接向这些字段注入值


有关字段访问和属性访问的详细信息,请参阅。

是否尝试在实体类中放置断点以查看其某些行为?是否尝试在实体类中放置断点以查看其某些行为?我不同意。如果一个属性被配置为按字段访问,那么如果我们不为该属性定义setter就可以了。我不同意。如果将属性配置为按字段访问,则不为该属性定义setter也可以。