最近一个项目又用上了 Hibernate,请问在这样的情况下如何优雅的查询

2019-08-09 10:11:09 +08:00
 avk458

现在接手的一个项目比较老,前面经历了 3 个开发团队,业务逻辑复杂表关系设计也比较混乱。 现在需要开发一个接口,需要的数据要从很多有关系没关系的表中取,如果写 SQL 大致如下

select *
from t_test_object tto
left join t_consign_info tci on tto.consign_info_id = tci.id
left join t_consign_project tcp on tci.project_id = tcp.id
left join t_report_object tro on tto.id = tro.test_object_id
left join t_report tr on tro.report_id = tr.id
left join t_task_report ttr on tr.id = ttr.report_id
left join t_test_task ttt on ttr.task_id = ttt.id
where tcp.is_test_item = '0';

还有几张表没有写进去,接口要求支持分页,看以前的类似接口都是写的这种 SQL 查询的。 学了一下criteriahibernatetemplate之后,想请教一下这种业务需求是将数据的拼接以面向对象的思想放到代码中好,还是用 SQL 查询将压力放到数据库更好呢?

3007 次点击
所在节点    Java
2 条回复
ayonel
2019-08-09 14:25:33 +08:00
看这段 sql 的性能吧,如果性能 ok,还是上 sql 省事。分页,用各种分页插件,比如 pageHelper 啥的。
join 查询,非 sql 的 ORM 实现方式都不优雅,比直接上 sql 还难维护
singleu
2019-08-09 17:32:52 +08:00
explain 看效率吧。还行就 sql 咯

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590370

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX