Я получаю список объектов List<APIObjects> apiObjectList
в качестве входных данных для моего API (через HTTP-сообщение), мне нужно сравнить этот входной список с моим списком объектов-сущностей, который я получаю, выполняя repository.findAll()
с Spring-boot-data-JPA
framework
В настоящее время я зацикливаю List<DatabaseObject>
и затем нахожу, есть ли совпадение.Ниже приведен мой код
public Boolean findIfAllAPIobjectsExist (List<APIObject> apiObjects) {
List<DatabaseObject> databaseObjectsList = databaseRepository.findAll()
return apiObjects.stream().allMatch {
apiObject -> {
for (DatabaseObject dbObject : databaseObjectsList) {
if ((dbObject.getGroupId().trim().equals(dbObject.getGroupId().trim())) &&
(dbObject.getArtifactId().trim() .equals(dbObject.getArtifactId().trim())) &&
(dbObject.getVersion().trim().equals(dbObject.getVersion().trim()))) {
System.out.println("Matching ..");
return true;
}
}
return false;
}
}
}
}
Но этот цикл занимает много времени и памяти, и как его можно решить с помощью лямбда-функций?Я почти уверен, что моя текущая методология, показанная выше (цикл DatabaseObject), не является правильным или профессиональным способом ее решения
APIObject.java
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class APIObject{
private String groupId;
private String artifactId;
private String version;
}
DatabaseObject.java
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "my_table")
public class DatabaseObject {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Column(name = "name")
String name;
@Column(name = "group_id")
String groupId;
@Column(name = "artifact_id")
String artifactId;
@Column(name = "version")
String version;
}