From c737581c931a9aaac0673fd8ffd5e510dc02c5ce Mon Sep 17 00:00:00 2001 From: Sebastian Peters Date: Thu, 30 Jun 2016 10:26:45 +0200 Subject: [PATCH] add sql indexes --- src/main/java/org/datacite/mds/domain/Dataset.java | 2 ++ src/main/java/org/datacite/mds/domain/Media.java | 8 ++++++++ src/main/java/org/datacite/mds/domain/Metadata.java | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/src/main/java/org/datacite/mds/domain/Dataset.java b/src/main/java/org/datacite/mds/domain/Dataset.java index fa95f1e3..351a31c5 100644 --- a/src/main/java/org/datacite/mds/domain/Dataset.java +++ b/src/main/java/org/datacite/mds/domain/Dataset.java @@ -25,6 +25,7 @@ import org.datacite.mds.validation.constraints.MatchDomain; import org.datacite.mds.validation.constraints.URL; import org.datacite.mds.validation.constraints.Unique; +import org.hibernate.annotations.Index; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat.ISO; import org.springframework.roo.addon.entity.RooEntity; @@ -79,6 +80,7 @@ public class Dataset { @Temporal(TemporalType.TIMESTAMP) @DateTimeFormat(iso = ISO.DATE_TIME) + @Index(name = "updated") private Date updated; @Temporal(TemporalType.TIMESTAMP) diff --git a/src/main/java/org/datacite/mds/domain/Media.java b/src/main/java/org/datacite/mds/domain/Media.java index 204de8b6..c7a081e7 100644 --- a/src/main/java/org/datacite/mds/domain/Media.java +++ b/src/main/java/org/datacite/mds/domain/Media.java @@ -15,6 +15,8 @@ import org.datacite.mds.validation.constraints.MediaType; import org.datacite.mds.validation.constraints.URL; import org.datacite.mds.validation.constraints.Unique; +import org.hibernate.annotations.Index; +import org.hibernate.annotations.Table; import org.hibernate.validator.constraints.NotEmpty; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat.ISO; @@ -29,6 +31,12 @@ @Unique(field = { "dataset", "mediaType" }) @MatchDomain(groups = Media.SecondLevelConstraint.class) @GroupSequence( { Media.class, Media.SecondLevelConstraint.class }) +@Table( + appliesTo = "media", + indexes = { + @Index(name = "dataset_updated", columnNames = {"dataset", "updated"}) + } +) public class Media implements Comparable { @ManyToOne diff --git a/src/main/java/org/datacite/mds/domain/Metadata.java b/src/main/java/org/datacite/mds/domain/Metadata.java index 55f1f2c6..7b39bca1 100644 --- a/src/main/java/org/datacite/mds/domain/Metadata.java +++ b/src/main/java/org/datacite/mds/domain/Metadata.java @@ -21,6 +21,8 @@ import org.datacite.mds.service.SchemaService; import org.datacite.mds.validation.constraints.MatchDoi; import org.datacite.mds.validation.constraints.ValidXML; +import org.hibernate.annotations.Index; +import org.hibernate.annotations.Table; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat.ISO; @@ -34,6 +36,12 @@ @RooEntity @MatchDoi(groups = Metadata.SecondLevelConstraint.class) @GroupSequence({ Metadata.class, Metadata.SecondLevelConstraint.class }) +@Table( + appliesTo = "metadata", + indexes = { + @Index(name = "dataset_version", columnNames = {"dataset", "metadataVersion"}) + } +) public class Metadata { public static final int XML_MAX_SIZE = 10 * 1024 * 1024; // 10 MByte