Skip to content

Commit 79b6732

Browse files
committed
Added isDirty check on update and an option to disable this behavior
1 parent a3f6160 commit 79b6732

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

src/main/java/org/javawebstack/orm/Model.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ public <T> T getOriginalValue(String field) {
7373

7474
public boolean isDirty(String... fields) {
7575
List<String> dirty = getDirtyFields();
76+
if(fields.length == 0 && dirty.size() > 0)
77+
return true;
7678
for (String f : fields) {
7779
if (dirty.contains(f))
7880
return true;

src/main/java/org/javawebstack/orm/ORMConfig.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class ORMConfig {
1616
private boolean idAutoIncrement = true;
1717
private final List<TypeMapper> typeMappers = new ArrayList<>();
1818
private Injector injector;
19+
private boolean preventUnnecessaryUpdates = true;
1920

2021
public ORMConfig() {
2122
typeMappers.add(new DefaultMapper());
@@ -113,4 +114,13 @@ public String getTypeParameters(Class<?> type, int size) {
113114
}
114115
return null;
115116
}
117+
118+
public boolean shouldPreventUnnecessaryUpdates() {
119+
return preventUnnecessaryUpdates;
120+
}
121+
122+
public ORMConfig setPreventUnnecessaryUpdates(boolean preventUnnecessaryUpdates) {
123+
this.preventUnnecessaryUpdates = preventUnnecessaryUpdates;
124+
return this;
125+
}
116126
}

src/main/java/org/javawebstack/orm/Repo.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,8 @@ private void executeCreate(T entry) {
155155
}
156156

157157
public void update(T entry) {
158+
if(info.getConfig().shouldPreventUnnecessaryUpdates() && !entry.isDirty())
159+
return;
158160
observers.forEach(o -> o.saving(entry));
159161
observers.forEach(o -> o.updating(entry));
160162
where(info.getIdField(), getId(entry)).update(entry);

0 commit comments

Comments
 (0)