31
31
import org .springframework .data .mapping .IdentifierAccessor ;
32
32
import org .springframework .data .mapping .callback .EntityCallbacks ;
33
33
import org .springframework .data .relational .core .conversion .AggregateChange ;
34
+ import org .springframework .data .relational .core .conversion .AggregateChangeWithRoot ;
34
35
import org .springframework .data .relational .core .conversion .MutableAggregateChange ;
35
36
import org .springframework .data .relational .core .conversion .RelationalEntityDeleteWriter ;
36
37
import org .springframework .data .relational .core .conversion .RelationalEntityInsertWriter ;
@@ -61,8 +62,6 @@ public class JdbcAggregateTemplate implements JdbcAggregateOperations {
61
62
private final RelationalMappingContext context ;
62
63
63
64
private final RelationalEntityDeleteWriter jdbcEntityDeleteWriter ;
64
- private final RelationalEntityInsertWriter jdbcEntityInsertWriter ;
65
- private final RelationalEntityUpdateWriter jdbcEntityUpdateWriter ;
66
65
67
66
private final DataAccessStrategy accessStrategy ;
68
67
private final AggregateChangeExecutor executor ;
@@ -92,8 +91,6 @@ public JdbcAggregateTemplate(ApplicationContext publisher, RelationalMappingCont
92
91
this .accessStrategy = dataAccessStrategy ;
93
92
this .converter = converter ;
94
93
95
- this .jdbcEntityInsertWriter = new RelationalEntityInsertWriter (context );
96
- this .jdbcEntityUpdateWriter = new RelationalEntityUpdateWriter (context );
97
94
this .jdbcEntityDeleteWriter = new RelationalEntityDeleteWriter (context );
98
95
99
96
this .executor = new AggregateChangeExecutor (converter , accessStrategy );
@@ -122,8 +119,6 @@ public JdbcAggregateTemplate(ApplicationEventPublisher publisher, RelationalMapp
122
119
this .accessStrategy = dataAccessStrategy ;
123
120
this .converter = converter ;
124
121
125
- this .jdbcEntityInsertWriter = new RelationalEntityInsertWriter (context );
126
- this .jdbcEntityUpdateWriter = new RelationalEntityUpdateWriter (context );
127
122
this .jdbcEntityDeleteWriter = new RelationalEntityDeleteWriter (context );
128
123
this .executor = new AggregateChangeExecutor (converter , accessStrategy );
129
124
}
@@ -146,7 +141,7 @@ public <T> T save(T instance) {
146
141
147
142
RelationalPersistentEntity <?> persistentEntity = context .getRequiredPersistentEntity (instance .getClass ());
148
143
149
- Function <T , MutableAggregateChange <T >> changeCreator = persistentEntity .isNew (instance )
144
+ Function <T , AggregateChangeWithRoot <T >> changeCreator = persistentEntity .isNew (instance )
150
145
? entity -> createInsertChange (prepareVersionForInsert (entity ))
151
146
: entity -> createUpdateChange (prepareVersionForUpdate (entity ));
152
147
@@ -286,18 +281,18 @@ public void deleteAll(Class<?> domainType) {
286
281
executor .execute (change );
287
282
}
288
283
289
- private <T > T store (T aggregateRoot , Function <T , MutableAggregateChange <T >> changeCreator ,
284
+ private <T > T store (T aggregateRoot , Function <T , AggregateChangeWithRoot <T >> changeCreator ,
290
285
RelationalPersistentEntity <?> persistentEntity ) {
291
286
292
287
Assert .notNull (aggregateRoot , "Aggregate instance must not be null!" );
293
288
294
289
aggregateRoot = triggerBeforeConvert (aggregateRoot );
295
290
296
- MutableAggregateChange <T > change = changeCreator .apply (aggregateRoot );
291
+ AggregateChangeWithRoot <T > change = changeCreator .apply (aggregateRoot );
297
292
298
- aggregateRoot = triggerBeforeSave (change .getEntity (), change );
293
+ aggregateRoot = triggerBeforeSave (change .getRoot (), change );
299
294
300
- change .setEntity (aggregateRoot );
295
+ change .setRoot (aggregateRoot );
301
296
302
297
T entityAfterExecution = executor .execute (change );
303
298
@@ -313,25 +308,24 @@ private <T> void deleteTree(Object id, @Nullable T entity, Class<T> domainType)
313
308
MutableAggregateChange <T > change = createDeletingChange (id , entity , domainType );
314
309
315
310
entity = triggerBeforeDelete (entity , id , change );
316
- change .setEntity (entity );
317
311
318
312
executor .execute (change );
319
313
320
314
triggerAfterDelete (entity , id , change );
321
315
}
322
316
323
- private <T > MutableAggregateChange <T > createInsertChange (T instance ) {
317
+ private <T > AggregateChangeWithRoot <T > createInsertChange (T instance ) {
324
318
325
- MutableAggregateChange <T > aggregateChange = MutableAggregateChange .forSave (instance );
326
- jdbcEntityInsertWriter .write (instance , aggregateChange );
319
+ AggregateChangeWithRoot <T > aggregateChange = MutableAggregateChange .forSave (instance );
320
+ new RelationalEntityInsertWriter < T >( context ) .write (instance , aggregateChange );
327
321
return aggregateChange ;
328
322
}
329
323
330
- private <T > MutableAggregateChange <T > createUpdateChange (EntityAndPreviousVersion <T > entityAndVersion ) {
324
+ private <T > AggregateChangeWithRoot <T > createUpdateChange (EntityAndPreviousVersion <T > entityAndVersion ) {
331
325
332
- MutableAggregateChange <T > aggregateChange = MutableAggregateChange .forSave (entityAndVersion .entity ,
326
+ AggregateChangeWithRoot <T > aggregateChange = MutableAggregateChange .forSave (entityAndVersion .entity ,
333
327
entityAndVersion .version );
334
- jdbcEntityUpdateWriter .write (entityAndVersion .entity , aggregateChange );
328
+ new RelationalEntityUpdateWriter < T >( context ) .write (entityAndVersion .entity , aggregateChange );
335
329
return aggregateChange ;
336
330
}
337
331
@@ -383,14 +377,14 @@ private <T> MutableAggregateChange<T> createDeletingChange(Object id, @Nullable
383
377
previousVersion = RelationalEntityVersionUtils .getVersionNumberFromEntity (entity , persistentEntity , converter );
384
378
}
385
379
}
386
- MutableAggregateChange <T > aggregateChange = MutableAggregateChange .forDelete (domainType , entity , previousVersion );
380
+ MutableAggregateChange <T > aggregateChange = MutableAggregateChange .forDelete (domainType , previousVersion );
387
381
jdbcEntityDeleteWriter .write (id , aggregateChange );
388
382
return aggregateChange ;
389
383
}
390
384
391
385
private MutableAggregateChange <?> createDeletingChange (Class <?> domainType ) {
392
386
393
- MutableAggregateChange <?> aggregateChange = MutableAggregateChange .forDelete (domainType , null );
387
+ MutableAggregateChange <?> aggregateChange = MutableAggregateChange .forDelete (domainType );
394
388
jdbcEntityDeleteWriter .write (null , aggregateChange );
395
389
return aggregateChange ;
396
390
}
0 commit comments