Skip to content

Commit

Permalink
Optimize entity deletion in SimpleJpaRepository.
Browse files Browse the repository at this point in the history
This change improves the performance of the delete method by first checking if the entity is already managed by the EntityManager. If so, it removes the entity directly without additional database queries. This optimization can reduce unnecessary database lookups in certain scenarios.

Closes #3564
  • Loading branch information
Seol-JY authored and mp911de committed Aug 13, 2024
1 parent 3ab36fa commit 4f54291
Showing 1 changed file with 8 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
* @author Yanming Zhou
* @author Ernst-Jan van der Laan
* @author Diego Krupitza
* @author Seol-JY
*/
@Repository
@Transactional(readOnly = true)
Expand Down Expand Up @@ -196,14 +197,16 @@ public void delete(T entity) {

Class<?> type = ProxyUtils.getUserClass(entity);

T existing = (T) entityManager.find(type, entityInformation.getId(entity));

// if the entity to be deleted doesn't exist, delete is a NOOP
if (existing == null) {
if (entityManager.contains(entity)) {
entityManager.remove(entity);
return;
}

entityManager.remove(entityManager.contains(entity) ? entity : entityManager.merge(entity));
// if the entity to be deleted doesn't exist, delete is a NOOP
T existing = (T) entityManager.find(type, entityInformation.getId(entity));
if (existing != null) {
entityManager.remove(entityManager.merge(entity));
}
}

@Override
Expand Down

0 comments on commit 4f54291

Please sign in to comment.