Podívejme se na Jaře Boot (Spring Data JPA) aplikace s řadičem a služby jako v příkladu níže:
processEntity()
načte objekt z databáze a procesy/aktualizace.publishEntity()
je to samostatná metoda, znovu načítání objektu z databáze, a publikování na jiný systém. To vyžaduje, aby "poslední" stav subjektu z databáze.
Našel jsem několik blogů a článků, které doporučují pracovat s entitou v regulátoru, tj. mimo rámec transakce. Takže můj tříd vypadat takto:
@Service
public SomeService {
@Transactional
public void processEntity(long id) {
final SomeEntity someEntity = entityRepository.findById(id);
// process entity...
entityRepository.save(someEntity);
}
@Transactional(readOnly = true)
public void publishEntity(long id) {
final SomeEntity someEntity = entityRepository.findById(id);
// publish entity to another system...
}
}
@RestController
public SomeController {
@GetMapping(path = "/api/entity")
public ResponseEntity<Void> getEntity() {
someService.processEntity(1);
someService.publishEntity(1);
}
}
Je tento přístup rozumný? Nebo jsou tam lepší vzory pro takový případ použití? By to být považováno za "špatné praxe", pokud processEntity
vrátil samotná účetní jednotka k regulátoru, který prochází to publishEntity
?