我们能否在更新情况下重写 JPA 存储库的原生 SQL 保存方法

问题描述 投票:0回答:1

我正在为我的应用程序使用 Spring Boot 和 JPA 存储库。对于数据库,我使用 PostgreSQL 数据库。

我的表员工中有数百万行。由于性能问题,我在员工表上实现了数据库分区,分区列为company_id。

每当我对员工表执行任何数据库查询时,我总是传递company_id条件以获得更好的性能。

现在的问题是,当我对员工记录进行任何更改时,我总是使用 JPA 存储库的

save
方法。 save 方法在内部创建本机 SQL 查询更新记录,但它仅通过 emp_id (PK) 更新行。由于这个原因,性能再次下降,因为我们没有在where条件下检查company_id。

我想在实体更新操作中添加 Company_id 检查以获得更好的性能。我怎样才能实现这个目标?

java spring-boot hibernate jpa spring-data-jpa
1个回答
0
投票

为了实现更好的性能并确保在更新期间检查 company_id,您可以结合使用 Spring Data JPA 的功能和自定义存储库方法。这是一个逐步的方法:

自定义存储库方法:在 JPA 存储库接口中创建一个自定义方法,该方法接受 company_id 和 emp_id 作为参数。

自定义实现:在存储库接口中实现自定义方法,在其中使用 company_id 和 emp_id 作为条件构建查询。

实体监听器:您可以选择使用 JPA 实体监听器来拦截实体更新并确保始终应用 company_id 条件。

以下是实施这些步骤的方法:

© www.soinside.com 2019 - 2024. All rights reserved.