Hibernate API是否支持除List之外的集合形式的对象结果集?
例如,我有一个运行数十万次迭代的进程,以便为客户端创建一些数据。此过程使用Value表中的记录(例如),以便为每次迭代创建此输出。
使用List我必须遍历整个列表才能找到某个值,这很昂贵。我希望能够返回一个TreeMap并以编程方式指定一个键,这样我就可以在集合中搜索我需要的特定值。 Hibernate可以为我做这个吗?
答案 0 :(得分:2)
如果我理解正确,你将数据库中的一堆数据加载到内存中,然后通过查找该列表中的某些对象在本地使用它们。
如果是这种情况,我会看到2个选项。
正如我所说,在一般情况下,我赞成使用缓存的解决方案......
答案 1 :(得分:2)
我假设您指的是Query.list()
方法。如果是这样:否,除了List
之外,无法返回顶级结果。如果您收到太多结果,为什么不向数据库发出更有限的查询?如果查询难以约束,您可以使用Hibernate Map
的内容填充自己的List
,然后丢弃该列表。
答案 2 :(得分:1)
来自Java Persistence with Hibernate:
<map>
,保留关键和价值
对。使用java.util.HashMap
来
初始化一个属性。 java.util.SortedMap
使用<map>
元素和排序
属性可以设置为a
比较或自然排序
内存中排序。初始化
使用java.util.TreeMap
进行收集
实例答案 3 :(得分:1)
是的,可以做到。
但是,您可能必须让您的域类实现Comparable
;我不认为你可以使用比较器来做到这一点。
修改强> 好像我误解了这个问题。如果您正在讨论即席查询的结果,那么上述内容对您没有帮助。如果查询是固定的,可以通过将具有TreeMap属性的对象绑定到数据库视图来使其工作。
当然,你总是可以用很少的工作和处理开销来自己构建地图。