From 2cda32e96f4fb78dbd2534cfeb245ce998bf4d14 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Mon, 5 Jan 2026 17:53:06 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EB=B2=A8=ED=95=A0=EB=8B=B9=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../label/LabelAllocateRepositoryImpl.java | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java index 05b09d26..418f791b 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/label/LabelAllocateRepositoryImpl.java @@ -34,6 +34,7 @@ import jakarta.persistence.EntityManager; import jakarta.persistence.EntityNotFoundException; import jakarta.persistence.PersistenceContext; import jakarta.transaction.Transactional; +import java.sql.PreparedStatement; import java.time.LocalDate; import java.time.LocalTime; import java.time.ZoneId; @@ -43,6 +44,7 @@ import java.util.Objects; import java.util.UUID; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.hibernate.Session; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; @@ -106,27 +108,41 @@ public class LabelAllocateRepositoryImpl implements LabelAllocateRepositoryCusto .execute(); // 라벨러 할당 테이블에 insert - String sql = - """ + Session session = em.unwrap(Session.class); + + session.doWork( + connection -> { + String sql = + """ insert into tb_labeling_assignment (assignment_uid, inference_geom_uid, worker_uid, work_state, assign_group_id, anal_uid) values (?, ?, ?, ?, ?, ?) """; - for (AllocateInfoDto info : ids) { - em.createNativeQuery(sql) - .setParameter(1, UUID.randomUUID()) - .setParameter(2, info.getGeoUid()) - .setParameter(3, userId) - .setParameter(4, LabelState.ASSIGNED.getId()) - .setParameter(5, info.getMapSheetNum()) - .setParameter(6, analEntity.getId()) - .executeUpdate(); - } + try (PreparedStatement ps = connection.prepareStatement(sql)) { + int batchSize = 0; - em.flush(); - em.clear(); + for (AllocateInfoDto info : ids) { + ps.setObject(1, UUID.randomUUID()); + ps.setLong(2, info.getGeoUid()); + ps.setString(3, userId); + ps.setString(4, LabelState.ASSIGNED.getId()); + ps.setString(5, String.valueOf(info.getMapSheetNum())); + ps.setLong(6, analEntity.getId()); + + ps.addBatch(); + batchSize++; + + if (batchSize % 1000 == 0) { + ps.executeBatch(); + ps.clearBatch(); + } + } + + ps.executeBatch(); + } + }); } @Override