2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2021-2022 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.cps.spi.repository;
23 import java.sql.PreparedStatement;
24 import java.util.List;
25 import javax.persistence.EntityManager;
26 import javax.persistence.PersistenceContext;
27 import org.hibernate.Session;
28 import org.springframework.transaction.annotation.Transactional;
32 public class SchemaSetYangResourceRepositoryImpl implements SchemaSetYangResourceRepository {
34 private static final int MAX_INSERT_BATCH_SIZE = 100;
37 private EntityManager entityManager;
40 public void insertSchemaSetIdYangResourceId(final Integer schemaSetId, final List<Long> yangResourceIds) {
41 final Session session = entityManager.unwrap(Session.class);
42 session.doWork(connection -> {
43 try (PreparedStatement preparedStatement = connection.prepareStatement(
44 "INSERT INTO SCHEMA_SET_YANG_RESOURCES (SCHEMA_SET_ID, YANG_RESOURCE_ID) VALUES ( ?, ?)")) {
45 int sqlQueryCount = 1;
46 for (final long yangResourceId : yangResourceIds) {
47 preparedStatement.setInt(1, schemaSetId);
48 preparedStatement.setLong(2, yangResourceId);
49 preparedStatement.addBatch();
50 if (sqlQueryCount % MAX_INSERT_BATCH_SIZE == 0 || sqlQueryCount == yangResourceIds.size()) {
51 preparedStatement.executeBatch();