对复杂查询使用JPA映射

时间:2018-08-26 06:44:32

标签: jpa

我有以下实体

  • 员工:id,empId,fname,lastName,年龄

  • EmployeeAttendence:id,Empid(FK),日期,subjectId(FK),wasPresent

  • 主题:id,subjectName

需要查询: -对于30至40岁之间的所有雇员,请查找其在d1和d2之间是否存在(对于subjectId = 5)。 如果员工不在场,则记录必须存在,但考勤记录为空

将JPA用于此类事情是否有价值?还是我应该使用普通的SQL。

1 个答案:

答案 0 :(得分:0)

我认为您对为什么JPA有用感到有些困惑。

从JPA获得的好处是您将拥有许多功能,这些功能将帮助您修改数据。您将获得并发控制选项(显式锁定/隐式锁定/乐观/悲观锁定),脏检查机制,缓存,动态更新,透明的JDBC批处理等等。

用于读取数据,您当然可以使用您的实体,但这仅适用于简单的用例。如果从您的角度考虑性能和更复杂的查询,那么您可以选择使用JPQL,如果无法使用,则使用本机SQL。 为了阅读,我更喜欢使用DTO投影,因为与使用纯图元相比,它会对性能产生巨大影响。

更多阅读:

https://blog.arnoldgalovics.com/using-projections-in-your-data-access-layer/ https://blog.arnoldgalovics.com/how-much-projections-can-help/