Quantcast
Channel: User Álvaro García - Software Engineering Stack Exchange
Viewing all articles
Browse latest Browse all 40

In DDD, concurrency belongs to application layer?

$
0
0

In DDD, the model has to implement only the bussiness logic, and it has not the responsability about another things, like persistance.

So I was thinking that perhaps is in the application layer a good place, because it is the layer who get data from the database with the repository, call the methods of the domain and persists the data. Something like that:

class MyApplicationService{    public void UpdateEntity()    {        long myActualVersion = Repository.GetActualVersion(EntityToUpdate.Id);        EntityToUpdate.Update(data);        Repository.IncrementVersion(EntityToUpdate.Id);        //Do something to check if it will be update the expected version or not.        Repository.Commit();    }}

But I was thinking that perhaps it belongs to the repository, something like that:

class Repository{    Update(paramEntityId, paramNewData)    {        ActualEntity = _conntext.Get(paramEntityId);        ActualEntity.Update(paramNewData);        _context.Commit();    }}

In this case, in the database I could have a row version and it will throw an exception that could be handle in the application layer and decide if retry or not, for example.

I am thinking that perhaps the second option it is better, because concurrency is a database concern, so perhaps it is better to handle in the repository, but I am not sure if perhaps it is better in the application layer, or there are another options.

Thanks.


Viewing all articles
Browse latest Browse all 40

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>