Java 使用hibernate加载对象

Java 使用hibernate加载对象,java,hibernate,Java,Hibernate,我不熟悉hibernate。我有一个对象的主键值,需要从DB加载一个对象。 我了解到可以使用get()或load()或使用criteria API加载对象 我有点困惑,在什么条件下使用哪个更好。有人能给我指路吗?会话。get()检查对象是否已经在会话中。如果是,则返回。如果没有,它将执行select语句以加载会话中对象的状态,并返回该状态。这是默认情况下应该使用的方法 Session.load()检查对象是否已在会话中。如果是,则返回。如果没有,它将创建一个未初始化的代理并返回该代理。它甚至没有

我不熟悉hibernate。我有一个对象的主键值,需要从DB加载一个对象。 我了解到可以使用get()或load()或使用criteria API加载对象

我有点困惑,在什么条件下使用哪个更好。有人能给我指路吗?

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

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


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

发布您的代码到目前为止总是很有帮助的。