Congratulations on the release! Being an extremely lacking contributor to Cayenne in the code sense, I decided this time I could at least contribute a little testing so I've been running 5.0 in production on a couple of projects for a few weeks (mostly personal projects where no one dies if anything bad happens but still a few hundred active users, quite some traffic/load and a few million DB records to play with). Didn't mention this sooner since, well, it's kind of stupid — and I didn't want to accidentally cause you any unnecessary subconscious second thoughts about moving fast and breaking stuff. But now I can at least claim I'll be sticking with M1 :p.
The migration to 5.0 was easy, mostly just upgrade model and class templates and then a little manual find/replace to accommodate the new class/interface structure. The systems have been running great (on JDK 22) with nothing to report, really. And as someone that's far too long stuck with 4.1 (for…reasons) the new Property APIs, and just all the added query/expression/SQL function features in general, are an absolute joy to have and use (and have allowed me to throw out more than a few SQLSelects). I've been working through the 4.2 and 5 release notes trying out new features/improvements and using them to rewrite older stuff, and I've had quite a few "oh, this is nice"-moments. Having the well written, detailed release notes really is a great help during a process like this so thanks for that. I'll do a more detailed writeup at some point. But in short; 5.0 is really making me all re-excited about Cayenne. Thanks for all the work you're doing and again, congrats! - hugi > On 27 Sep 2024, at 21:23, Andrus Adamchik <aadamc...@gmail.com> wrote: > > A belated, but nonetheless exciting announcement. Our team recently released > the first milestone of Cayenne 5.0. > > There are more than a hundred Jiras in the release notes, so it is easy to > get lost 🙃 But the main direction is simplifying the structure of the > framework, now that we removed the previously deprecated ROP piece (the > multi-tier stack). Suddenly, we could switch to sane module and class naming, > flatten inheritance hierarchies of the core classes, and so on. Some examples: > > - "cayenne-server" is now "cayenne" > - CayenneDataObject is PersistentObject (and a generic variant - > GenericPersistentObject) > - ServerRuntime is CayenneRuntime > > Other notable changes and new features: > > * Min Java version supported is 11 (should've probably gone with 21 :)) > * SELF property in class generation templates > * Unified class generation UI (also a result of ROP removal) > * Direct support for "(not) exists" expressions (it was somewhat confusing in > 4.2) > * ANY, ALL subqueries and "case when" expressions > * Per-project disabling of validation rules > > .. and a number of other smaller things. > > Enjoy! > > Andrus > > https://cayenne.apache.org/download/ > https://cayenne.apache.org/2024/09/cayenne-50m1-released/ > > >