【发布时间】:2014-10-25 13:42:28
【问题描述】:
我有这样的查询
Select Folder.name from FROM FolderTable,ValidFolder, ValidFolderGroup, ValidUser,
ValidLocation, ValidDepartment where ValidUser.LocationCode *= ValidLocation.LocationCode
and ValidUser.DepartmentCode *= ValidDepartment.DepartmentCode and Folder.IssueUser =
ValidUser.UserId and ValidFolder.FolderType = Folder.FolderType and
ValidFolderGroup.FolderGroupCode = ValidFolder.FolderGroupCode and
ValidFolderGroup.GroupTypeCode = 13 and (ValidUser.UserId='User' OR
ValidUser.ManagerId='User') and ValidFolderGroup.GroupTypeCode = 13 and
Folder.IssueUser = 'User'
现在这里所有以Valid开头的表都是缓存表,所以这些表已经包含数据了。
假设如果有人使用 JOOQ 或 Hibernate 哪个是最佳选择
- 对所有联接使用上述查询?
- 或者使用Java代码来满足要求而不是加入,因为作为用户使用
Hibernate或JOOQ它已经有Java类的表和Valid表已经有所有的数据?
【问题讨论】:
-
您的问题并不完全清楚。 “使用 Java”是什么意思?
-
我的意思是说 Java 代码是因为有效表已经缓存了数据,所以这些表 java 类的实例已经包含了该表的所有数据,所以我可以先将有效表添加到条件中从文件夹表中获取所有记录,然后在 Java for 循环中我可以满足条件并创建一个列表
-
您使用什么作为缓存机制?如果您只是将整个
Valid表加载到内存中,我几乎可以向您保证这是一个糟糕的解决方案。对于任何问题。 -
有效表只有很少的记录,比如只有 10-20 条记录
-
你怎么知道的?您有什么机制来执行此操作?