繁体   English   中英

使用休眠模式加载对象

[英]Loading objects using hibernate

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

我有些困惑,在哪种情况下最好使用哪种。 有人可以指导我吗?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM