休眠如何使用延迟获取引用



首先,我将使用休眠从数据库获取游戏对象列表

List<Game> games = (List<Game>) session.createQuery("from Game where status=2").list();

假设游戏对象具有对位置对象的引用。位置对象有一个 Id。

long id = games.get(0).getLocation().getId();

在这里,我需要知道游戏映射到的位置的 ID。位置被定义为延迟获取。但是在数据库中,游戏的每一行都有location_id字段。

所以我的问题是,当我请求休眠通过如图所示的对象获取 Id 时,它是首先获取对象,然后获取该对象的 Id? 还是更智能并直接从游戏中获取 Id?

它将生成 2 个语句。

首先选择游戏,包括游戏 ID 和位置 ID

其次,选择整个位置行,包括位置 ID。

为什么?因为getLocation()之后运行时不会知道你只需要id

最新更新