【问题标题】:Best way to show hibernate query results in jsp在 jsp 中显示休眠查询结果的最佳方法
【发布时间】:2015-08-02 08:40:15
【问题描述】:

由于“在视图中打开会话”模式有一些缺点(请参阅Why is Hibernate Open Session in View considered a bad practice?),我想知道将休眠查询的结果显示到 jsp 页面的最佳方法是什么?

我想到的一种方法是在请求中放一个java.util.list对象,并将内容输出到jsp页面。还有其他/更好的方法吗?

【问题讨论】:

  • 我理解为什么 OSIV 是一个不好的做法的方式是你将你的数据库对象传递到你的前端软件 - 一个简单的通用示例是从你的实体对象中取出 DTO,由你的后端创建并传递到您的前端。

标签: java hibernate jakarta-ee jpa orm


【解决方案1】:

最好的方法是为您的 UI 视图使用 DTO 投影。这样你就可以避免LazyInitializationExceptions 并确保你只在某个视图中获取你需要的东西。从性能的角度来看,没有什么比 SQL 投影更好的了。

DTO 投影如下所示:

select new my.package.UserInfo(u.name, u.age, u.gender)
from Users u

【讨论】:

  • 不确定我是否理解,因为我是休眠新手。当您说 DTO 预测时,您的意思是使用 Criteria Queries?
  • 您可以同时使用 Criteria 和 HQL。目标是将所有内容都选择为 DTO,而不是根实体。
  • 你能提供一个在 DTO 中选择它的例子吗?你的意思是这样的吗? session.createQuery(hql).list()
  • 完成。但是,如果您不介意,您能否提供一个在 DTO 中全部选择的示例?我现在正在研究如何做到这一点,但如果您提供一个示例供参考,那就太好了。谢谢。
  • 我们会把查询的结果放到一个列表中对吧?那么将列表绑定到请求对象是一个很好的解决方案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多