【发布时间】:2009-08-06 06:39:19
【问题描述】:
我必须拥有具有多对多关系的类(用户集和用户)(即每个用户都可以属于一些用户集)。在数据库中有一个用户集表、一个用户表和一个“中间”表 (UsersToUserSets)。 现在,如果我想通过执行从 UserSet 中删除用户
userSet.getUsers().remove(user);
session.flush()
Hibernate 首先获取属于 userSet 的 所有 个用户,然后删除一个用户并更新“中间”表。
由于可能有成千上万的用户属于一个 UserSet,这对性能非常不利。有没有办法避免所有用户都被获取?
映射文件的有趣部分如下所示:
<class name="...UserSet">
...
<set name="users" table="T_UM_USERS2USER_SETS">
<key column="FK_USER_SET_ID" />
<many-to-many column="FK_USER_ID"
class="...User" />
</set>
...
</class>
<class name="...User">
...
<set name="userSets" table="T_UM_USERS2USER_SETS" inverse="true">
<key column="FK_USER_ID" />
<many-to-many column="FK_USER_SET_ID" class="...UserSet" />
</set>
</class>
【问题讨论】:
标签: performance hibernate