From e5b5bfe4fccd4ec8a508bf26347a3f6692f54af8 Mon Sep 17 00:00:00 2001 From: edwincruz Date: Fri, 24 Feb 2023 12:43:43 -0500 Subject: [PATCH] Attribute in the entity uses eager fetching. Consider using lazy fetching which, not only that is more efficient, but is way more flexible when it comes to fetching data. --- .../domain/CohortCharacterizationEntity.java | 2 +- .../ohdsi/webapi/cohortdefinition/CohortGenerationInfo.java | 2 +- .../ohdsi/webapi/executionengine/entity/AnalysisFile.java | 2 +- .../executionengine/entity/AnalysisResultFileContent.java | 2 +- .../webapi/feanalysis/domain/FeAnalysisCriteriaEntity.java | 2 +- .../feanalysis/domain/FeAnalysisWithCriteriaEntity.java | 4 ++-- .../org/ohdsi/webapi/feasibility/StudyGenerationInfo.java | 5 +++-- src/main/java/org/ohdsi/webapi/ircalc/ExecutionInfo.java | 4 ++-- .../ohdsi/webapi/ircalc/IncidenceRateAnalysisDetails.java | 2 +- .../ohdsi/webapi/shiro/Entities/RolePermissionEntity.java | 5 +++-- .../org/ohdsi/webapi/shiro/Entities/UserRoleEntity.java | 5 +++-- src/main/java/org/ohdsi/webapi/source/SourceDaimon.java | 6 ++++-- .../ohdsi/webapi/user/importer/model/RoleGroupEntity.java | 5 +++-- .../org/ohdsi/webapi/user/importer/model/UserImportJob.java | 2 +- 14 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/ohdsi/webapi/cohortcharacterization/domain/CohortCharacterizationEntity.java b/src/main/java/org/ohdsi/webapi/cohortcharacterization/domain/CohortCharacterizationEntity.java index c9aef23268..1562fc4a22 100644 --- a/src/main/java/org/ohdsi/webapi/cohortcharacterization/domain/CohortCharacterizationEntity.java +++ b/src/main/java/org/ohdsi/webapi/cohortcharacterization/domain/CohortCharacterizationEntity.java @@ -70,7 +70,7 @@ public class CohortCharacterizationEntity extends CommonEntityExt implemen @Column(name = "strata_only") private Boolean strataOnly; - @OneToOne(mappedBy = "cohortCharacterization", cascade = CascadeType.ALL) + @OneToOne(mappedBy = "cohortCharacterization", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private CcStrataConceptSetEntity conceptSetEntity; @Column(name = "hash_code") diff --git a/src/main/java/org/ohdsi/webapi/cohortdefinition/CohortGenerationInfo.java b/src/main/java/org/ohdsi/webapi/cohortdefinition/CohortGenerationInfo.java index f79d3fd1db..b5e392e9ec 100644 --- a/src/main/java/org/ohdsi/webapi/cohortdefinition/CohortGenerationInfo.java +++ b/src/main/java/org/ohdsi/webapi/cohortdefinition/CohortGenerationInfo.java @@ -52,7 +52,7 @@ public CohortGenerationInfo(CohortDefinition definition, Integer sourceId) @EmbeddedId private CohortGenerationInfoId id; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @MapsId("cohortDefinitionId") @JoinColumn(name="id", referencedColumnName="id") private CohortDefinition cohortDefinition; diff --git a/src/main/java/org/ohdsi/webapi/executionengine/entity/AnalysisFile.java b/src/main/java/org/ohdsi/webapi/executionengine/entity/AnalysisFile.java index a662b95309..ce439a84f7 100644 --- a/src/main/java/org/ohdsi/webapi/executionengine/entity/AnalysisFile.java +++ b/src/main/java/org/ohdsi/webapi/executionengine/entity/AnalysisFile.java @@ -27,7 +27,7 @@ public class AnalysisFile { @Column private Long id; - @ManyToOne(optional = false) + @ManyToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "execution_id", nullable = false, updatable = false) private ExecutionEngineAnalysisStatus analysisExecution; diff --git a/src/main/java/org/ohdsi/webapi/executionengine/entity/AnalysisResultFileContent.java b/src/main/java/org/ohdsi/webapi/executionengine/entity/AnalysisResultFileContent.java index 3b3d6dcca1..e57941f323 100644 --- a/src/main/java/org/ohdsi/webapi/executionengine/entity/AnalysisResultFileContent.java +++ b/src/main/java/org/ohdsi/webapi/executionengine/entity/AnalysisResultFileContent.java @@ -16,7 +16,7 @@ public class AnalysisResultFileContent { @Column(name = "output_file_id") private Long id; - @OneToOne + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "output_file_id") @MapsId private AnalysisResultFile analysisResultFile; diff --git a/src/main/java/org/ohdsi/webapi/feanalysis/domain/FeAnalysisCriteriaEntity.java b/src/main/java/org/ohdsi/webapi/feanalysis/domain/FeAnalysisCriteriaEntity.java index 038a6f435d..b74c252890 100644 --- a/src/main/java/org/ohdsi/webapi/feanalysis/domain/FeAnalysisCriteriaEntity.java +++ b/src/main/java/org/ohdsi/webapi/feanalysis/domain/FeAnalysisCriteriaEntity.java @@ -45,7 +45,7 @@ public abstract class FeAnalysisCriteriaEntity implements WithId { @Type(type = "org.hibernate.type.TextType") private String expressionString; - @ManyToOne(fetch = FetchType.EAGER) + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "fe_aggregate_id") private FeAnalysisAggregateEntity aggregate; diff --git a/src/main/java/org/ohdsi/webapi/feanalysis/domain/FeAnalysisWithCriteriaEntity.java b/src/main/java/org/ohdsi/webapi/feanalysis/domain/FeAnalysisWithCriteriaEntity.java index 65647a937d..6110ada55c 100644 --- a/src/main/java/org/ohdsi/webapi/feanalysis/domain/FeAnalysisWithCriteriaEntity.java +++ b/src/main/java/org/ohdsi/webapi/feanalysis/domain/FeAnalysisWithCriteriaEntity.java @@ -11,11 +11,11 @@ @Entity public abstract class FeAnalysisWithCriteriaEntity extends FeAnalysisEntity> implements FeatureAnalysisWithCriteria { - @OneToMany(targetEntity = FeAnalysisCriteriaEntity.class, fetch = FetchType.EAGER, mappedBy = "featureAnalysis", + @OneToMany(targetEntity = FeAnalysisCriteriaEntity.class, fetch = FetchType.LAZY, mappedBy = "featureAnalysis", cascade = {CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH, CascadeType.DETACH}) private List design; - @OneToOne(fetch = FetchType.EAGER, mappedBy = "featureAnalysis", cascade = CascadeType.ALL) + @OneToOne(fetch = FetchType.LAZY, mappedBy = "featureAnalysis", cascade = CascadeType.ALL) private FeAnalysisConcepsetEntity conceptSetEntity; public FeAnalysisWithCriteriaEntity() { diff --git a/src/main/java/org/ohdsi/webapi/feasibility/StudyGenerationInfo.java b/src/main/java/org/ohdsi/webapi/feasibility/StudyGenerationInfo.java index 59f6560061..fd7e7de859 100644 --- a/src/main/java/org/ohdsi/webapi/feasibility/StudyGenerationInfo.java +++ b/src/main/java/org/ohdsi/webapi/feasibility/StudyGenerationInfo.java @@ -22,6 +22,7 @@ import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.MapsId; @@ -42,13 +43,13 @@ public class StudyGenerationInfo implements Serializable { private StudyGenerationInfoId id; @JsonIgnore - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @MapsId("studyId") @JoinColumn(name="study_id", referencedColumnName="id") private FeasibilityStudy study; @JsonIgnore - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @MapsId("sourceId") @JoinColumn(name="source_id", referencedColumnName="source_id") private Source source; diff --git a/src/main/java/org/ohdsi/webapi/ircalc/ExecutionInfo.java b/src/main/java/org/ohdsi/webapi/ircalc/ExecutionInfo.java index 252c31306d..cf56b6b742 100644 --- a/src/main/java/org/ohdsi/webapi/ircalc/ExecutionInfo.java +++ b/src/main/java/org/ohdsi/webapi/ircalc/ExecutionInfo.java @@ -40,13 +40,13 @@ public class ExecutionInfo implements Serializable, IExecutionInfo { private ExecutionInfoId id; @JsonIgnore - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @MapsId("analysisId") @JoinColumn(name="analysis_id", referencedColumnName="id") private IncidenceRateAnalysis analysis; @JsonIgnore - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @MapsId("sourceId") @JoinColumn(name="source_id", referencedColumnName="source_id") @NotFound(action = NotFoundAction.IGNORE) diff --git a/src/main/java/org/ohdsi/webapi/ircalc/IncidenceRateAnalysisDetails.java b/src/main/java/org/ohdsi/webapi/ircalc/IncidenceRateAnalysisDetails.java index 2d277b615c..d814858007 100644 --- a/src/main/java/org/ohdsi/webapi/ircalc/IncidenceRateAnalysisDetails.java +++ b/src/main/java/org/ohdsi/webapi/ircalc/IncidenceRateAnalysisDetails.java @@ -40,7 +40,7 @@ public class IncidenceRateAnalysisDetails implements Serializable { private Integer id; @MapsId - @OneToOne + @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name="id") private IncidenceRateAnalysis analysis; diff --git a/src/main/java/org/ohdsi/webapi/shiro/Entities/RolePermissionEntity.java b/src/main/java/org/ohdsi/webapi/shiro/Entities/RolePermissionEntity.java index 6cd710ee41..9d7fb924c1 100644 --- a/src/main/java/org/ohdsi/webapi/shiro/Entities/RolePermissionEntity.java +++ b/src/main/java/org/ohdsi/webapi/shiro/Entities/RolePermissionEntity.java @@ -3,6 +3,7 @@ import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; @@ -37,11 +38,11 @@ public class RolePermissionEntity implements Serializable { @Column(name = "STATUS") private String status; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="ROLE_ID", nullable=false) private RoleEntity role; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="PERMISSION_ID", nullable=false) private PermissionEntity permission; diff --git a/src/main/java/org/ohdsi/webapi/shiro/Entities/UserRoleEntity.java b/src/main/java/org/ohdsi/webapi/shiro/Entities/UserRoleEntity.java index 2b3e2ba9f2..85bf2a7691 100644 --- a/src/main/java/org/ohdsi/webapi/shiro/Entities/UserRoleEntity.java +++ b/src/main/java/org/ohdsi/webapi/shiro/Entities/UserRoleEntity.java @@ -5,6 +5,7 @@ import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; @@ -58,7 +59,7 @@ public void setStatus(String status) { this.status = status; } - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="USER_ID", nullable=false) public UserEntity getUser() { return user; @@ -68,7 +69,7 @@ public void setUser(UserEntity user) { this.user = user; } - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name="ROLE_ID", nullable=false) public RoleEntity getRole() { return role; diff --git a/src/main/java/org/ohdsi/webapi/source/SourceDaimon.java b/src/main/java/org/ohdsi/webapi/source/SourceDaimon.java index 4721106027..443d9e1d60 100644 --- a/src/main/java/org/ohdsi/webapi/source/SourceDaimon.java +++ b/src/main/java/org/ohdsi/webapi/source/SourceDaimon.java @@ -21,15 +21,17 @@ import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; + import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; import org.hibernate.annotations.SQLDelete; -import org.hibernate.annotations.Where; + import java.io.Serializable; import java.util.Objects; @@ -65,7 +67,7 @@ public SourceDaimon(Source source) { @Column(name="SOURCE_DAIMON_ID") private int sourceDaimonId; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JsonIgnore @JoinColumn(name="SOURCE_ID", referencedColumnName="SOURCE_ID") private Source source; diff --git a/src/main/java/org/ohdsi/webapi/user/importer/model/RoleGroupEntity.java b/src/main/java/org/ohdsi/webapi/user/importer/model/RoleGroupEntity.java index 6fa65ef4bc..d0f2bf6bad 100644 --- a/src/main/java/org/ohdsi/webapi/user/importer/model/RoleGroupEntity.java +++ b/src/main/java/org/ohdsi/webapi/user/importer/model/RoleGroupEntity.java @@ -5,6 +5,7 @@ import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; +import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; @@ -40,11 +41,11 @@ public class RoleGroupEntity { @Column(name = "group_name") private String groupName; - @ManyToOne + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "role_id") private RoleEntity role; - @ManyToOne() + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "job_id") private UserImportJob userImportJob; diff --git a/src/main/java/org/ohdsi/webapi/user/importer/model/UserImportJob.java b/src/main/java/org/ohdsi/webapi/user/importer/model/UserImportJob.java index 80a12f4a3d..ae6af04ff3 100644 --- a/src/main/java/org/ohdsi/webapi/user/importer/model/UserImportJob.java +++ b/src/main/java/org/ohdsi/webapi/user/importer/model/UserImportJob.java @@ -33,7 +33,7 @@ attributeNodes = @NamedAttributeNode("roleGroupMapping")) public class UserImportJob extends ArachneJob { - @ElementCollection(fetch = FetchType.EAGER) + @ElementCollection(fetch = FetchType.LAZY) @CollectionTable(name = "user_import_job_weekdays", joinColumns = @JoinColumn(name = "user_import_job_id")) @Column(name = "day_of_week") @Enumerated(EnumType.STRING)