aboutsummaryrefslogtreecommitdiffstats
path: root/cps-ri/src/main
diff options
context:
space:
mode:
authorToine Siebelink <toine.siebelink@est.tech>2022-08-22 14:38:37 +0000
committerGerrit Code Review <gerrit@onap.org>2022-08-22 14:38:37 +0000
commit7c1ade44e04bc6fa41141caaaa81f6b9954f7c88 (patch)
tree6d96478b1c51e9385cc88dda5901137d8a5d5f26 /cps-ri/src/main
parent8b86190c8687b6883708bf8409cb5efe8615333c (diff)
parenta6633c02eefedcf85639c7d756661f3e756c6634 (diff)
Merge "Performance Improvement: Insert Yang Resources"
Diffstat (limited to 'cps-ri/src/main')
-rw-r--r--cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java34
1 files changed, 24 insertions, 10 deletions
diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java
index 04eaa453e..c87e15adb 100644
--- a/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2021 Nordix Foundation.
+ * Copyright (C) 2021-2022 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,26 +20,40 @@
package org.onap.cps.spi.repository;
+import java.sql.PreparedStatement;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
+import org.hibernate.Session;
import org.springframework.transaction.annotation.Transactional;
+
@Transactional
public class SchemaSetYangResourceRepositoryImpl implements SchemaSetYangResourceRepository {
+ private static final int MAX_INSERT_BATCH_SIZE = 100;
+
@PersistenceContext
private EntityManager entityManager;
@Override
- public void insertSchemaSetIdYangResourceId(final Integer schemaSetId, final List<Long> yangResourceId) {
- final var query = "INSERT INTO SCHEMA_SET_YANG_RESOURCES (SCHEMA_SET_ID, YANG_RESOURCE_ID) "
- + "VALUES ( :schemaSetId, :yangResourceId)";
- yangResourceId.forEach(id ->
- entityManager.createNativeQuery(query)
- .setParameter("schemaSetId", schemaSetId)
- .setParameter("yangResourceId", id)
- .executeUpdate()
- );
+ public void insertSchemaSetIdYangResourceId(final Integer schemaSetId, final List<Long> yangResourceIds) {
+ final Session session = entityManager.unwrap(Session.class);
+ session.doWork(connection -> {
+ try (PreparedStatement preparedStatement = connection.prepareStatement(
+ "INSERT INTO SCHEMA_SET_YANG_RESOURCES (SCHEMA_SET_ID, YANG_RESOURCE_ID) VALUES ( ?, ?)")) {
+ int sqlQueryCount = 1;
+ for (final long yangResourceId : yangResourceIds) {
+ preparedStatement.setInt(1, schemaSetId);
+ preparedStatement.setLong(2, yangResourceId);
+ preparedStatement.addBatch();
+ if (sqlQueryCount % MAX_INSERT_BATCH_SIZE == 0 || sqlQueryCount == yangResourceIds.size()) {
+ preparedStatement.executeBatch();
+ }
+ sqlQueryCount++;
+ }
+ }
+ });
}
}
+