使用休眠加载对象

时间:2012-07-22 11:16:20

标签: java hibernate

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

我有点困惑哪一种更适合在哪种条件下使用。有人可以指导我吗?

1 个答案:

答案 0 :(得分:1)

Session.get()检查对象是否已在会话中。如果是,则返回它。如果不是,则执行select语句以加载会话中对象的状态,并返回它。这是默认情况下应该使用的方法。

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

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