Mercurial > dive4elements > river
diff backend/src/main/java/org/dive4elements/river/importer/ImportBedHeightValue.java @ 8986:392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
author | mschaefer |
---|---|
date | Sun, 08 Apr 2018 18:07:06 +0200 |
parents | a0a0a7f912ab |
children | 8aa7d9eaaa21 |
line wrap: on
line diff
--- a/backend/src/main/java/org/dive4elements/river/importer/ImportBedHeightValue.java Fri Apr 06 14:13:14 2018 +0200 +++ b/backend/src/main/java/org/dive4elements/river/importer/ImportBedHeightValue.java Sun Apr 08 18:07:06 2018 +0200 @@ -11,6 +11,7 @@ import java.util.List; import org.apache.log4j.Logger; +import org.dive4elements.river.importer.common.StoreMode; import org.dive4elements.river.model.BedHeight; import org.dive4elements.river.model.BedHeightValue; import org.hibernate.Query; @@ -61,13 +62,18 @@ if (this.peer != null) return this.peer; + List<BedHeightValue> values; final Session session = ImporterSession.getInstance().getDatabaseSession(); - final Query query = session.createQuery("FROM BedHeightValue WHERE (bedHeight=:bedHeight)" - + " AND (station BETWEEN (:station-0.0001) AND (:station+0.0001))"); - query.setParameter("bedHeight", bedHeight); - query.setParameter("station", this.station); - final List<BedHeightValue> values = query.list(); - if (values.isEmpty()) { + if (this.bedHeight.storeMode == StoreMode.INSERT) + values = null; + else { + final Query query = session.createQuery("FROM BedHeightValue WHERE (bedHeight=:bedHeight)" + + " AND (station BETWEEN (:station-0.0001) AND (:station+0.0001))"); + query.setParameter("bedHeight", bedHeight); + query.setParameter("station", this.station); + values = query.list(); + } + if ((values == null) || values.isEmpty()) { this.peer = new BedHeightValue(bedHeight, this.station, this.height, this.uncertainty, this.dataGap, this.soundingWidth, this.minHeight, this.maxHeight); session.save(this.peer);