在休眠分页中获取单个列值而不是实体

时间:2018-10-23 11:57:37

标签: hibernate pagination

技术堆栈:

春季4

休眠3

Angular 2

我正在处理需要分页的应用程序。 数据将显示在表格中,并且数据大部分为read only 我们不会修改数据。

我的问题是:

我已经阅读了很多有关分页的文章,并且所有人都建议使用HQL和检索实体。

但是,如果我的数据是只读的,为什么我需要检索实体并产生额外的开销? Hibernate将必须管理这些实体。

我将仅获取所需的列值并显示在表中。 每个页面边界都将有一次到数据库的往返(因为将不会进行缓存),但是如果我们在休眠状态下不使用缓存级别机制,则无论如何都必须进行。

即使我们使用缓存,管理缓存和缓存中的条目所需的工作量肯定也不仅仅是获取所需的列值。

这不是更好的设计方法吗? 请指教。

1 个答案:

答案 0 :(得分:1)

这是一个主观问题,但我遵循的一般规则:

  • 使用DELETION / UPDATE / INSERTION =>查询将实体作为管理状态的琐事,并从中获得了乐观锁定机制的好处。
  • 只需查询=>使用结果类的分页,这意味着您可以通过查询获得准备好的DTO对象。