调用hibernate session.get方法

时间:2012-04-02 10:47:08

标签: java hibernate

我知道所有这些术语,如新的,瞬态的,分离的等等。但是,有时我会遇到像 -

这样的问题

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

请你对此有所了解。

2 个答案:

答案 0 :(得分:0)

  

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

YES。 Hibernate将在获取数据后调用no-argument constructor来创建bean。它将调用setter方法来设置相应的值。这就是为什么当缺少任何getter / setter时hibernate会出错的原因。

如评论中所述,您可以设置调试点并查看此情况。

答案 1 :(得分:0)

  

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

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

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

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

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