java - 使用 hibernate 加载对象

标签 java hibernate

我是 hibernate 新手。我有一个对象的主键值,需要从数据库加载一个对象。 我读到可以使用 get() 或 load() 或使用 criteria API 来加载对象。

我有点困惑在哪种情况下哪个更好使用。有人可以指导我吗?

最佳答案

Session.get() 检查对象是否已在 session 中。如果是,则返回它。如果没有,它会执行一条 select 语句来加载 session 中对象的状态,然后返回它。这是您应该默认使用的方法。

Session.load() 检查对象是否已在 session 中。如果是,则返回它。如果不是,它会创建一个未初始化的代理并返回该代理。它甚至没有到达数据库。代理上调用的第一个方法将使 Hibernate 从数据库加载对象的状态,并初始化代理。当您只需要引用现有对象时,通常会使用此方法,例如初始化一对一关联。

条件查询或 HQL 查询将始终查询数据库。您不会使用它来执行与 Session.get() 相同的操作。通过主键加载对象并初始化关联(否则使用 Session.get() 会延迟加载)会很有用。如果您知道需要一个学生及其所有类(class),那么最好在单个查询中加载所有内容,而不是在一个查询中加载学生,然后在第二个查询中加载类(class)。

关于java - 使用 hibernate 加载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11599806/

相关文章:

java - Date date = calendar.getTime() 返回过去的日期

mysql - 错误: Delete then insert using JPA in single transaction

java - Entity.UserBean 无法转换为Entity.UserBean

java - Hibernate多参数setString生成Java

java - 如何循环遍历每个数组项并除以二?

java - Java 的隐藏特性

java - 将地址转换为经纬度时,地理编码 google api 卡住

java - 如何使用包编译并运行java

java - 来自 SQL View 的嵌套 JSON 响应

java - 为什么不推荐使用 buildSessionFactory()?