I'd just like to add that this is pretty awesome.
> On 23 Apr 2019, at 20:29, Lon Varscsak <lon.varsc...@gmail.com> wrote: > > Great feature! :P > > -Lon > > On Tue, Apr 23, 2019 at 12:16 AM Nikita Timofeev <ntimof...@objectstyle.com> > wrote: > >> Hi all, >> >> For a long time I've worked on this task [1] and now I'm ready to >> merge it [2]. As it's a pretty big change in a core part of Cayenne, I >> wanted to notify about is as much as I can. >> >> In short this is about mechanics that flushes changes from context to DB. >> Currently it's a monolith and private so no extension is effectively >> possible and it's hard to fix issues in it. >> >> The idea in a new version is to use intermediate representation of DB >> operations [3] and work with it, rather than generate queries directly >> from object changes. This potentially allows to modify this new >> pipeline endlessly. I.e. to modify sorting of operation without >> changing anything else, to customize query generation or even use >> custom queries. It even allows to use your own implementation of this >> operations. >> >> There are many new ideas I have where we can move from here. It >> already fixes issue with flattened attributes update. But right now >> this change should not break things. I really hope it won't break a >> lot, but there are so many options and Cayenne test suite is not >> perfect. So early adopters are welcome :) >> >> Just in case I left the old implementation so you can just connect it via >> DI. >> >> [1] https://issues.apache.org/jira/browse/CAY-2571 >> [2] https://github.com/apache/cayenne/pull/377 >> [3] >> https://github.com/apache/cayenne/blob/f55efff11227671dc89ab2d5561858e9e2e75100/cayenne-server/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOp.java#L32 >> -- >> Best regards, >> Nikita Timofeev >>