Re: M3 feature preview

"[email protected]" <[email protected]> Sat, 11 Jul 2026 10:52:32 +0200
Newsgroups gmane.comp.java.cayenne.devel
Message-ID <CAAOOpAM6nsxjbqh9Gc3xV33_+ac8w2ZV+AVCotvj9qexk85Rfw@mail.gmail.com>
Hello Andrus,

> But this means that for the first time Cayenne operates with Connection "=
autoCommit=3Dtrue".

=F0=9F=98=B1
This setting is more scary that an Halloween costume to me! =F0=9F=98=85
I trust your understanding of the trade-offs at play, but I have
always considered autoCommit the option used by toy projects, not
suitable for serious tasks.

But my views may well be obsolete by now. =F0=9F=98=81

Cheers, and =E2=80=93as always=E2=80=93 huge congratulations to all people =
involved in
moving the project forward.

Giulio Cesare

On Tue, Jul 7, 2026 at 3:17=E2=80=AFPM Andrus Adamchik <[email protected]=
> wrote:
>
> I am glad the new change didn't break much stuff :) Always a concern with=
 all the new ideas.
>
> BTW, as you probably noticed, we are now exposing translated queries with=
 parameters as standalone record objects instead of going straight from tra=
nslator to PreparedStatement, so they can be captured, inspected, logged, e=
tc (e.g., what the SQLLogger does).
>
> And on the broader topic of observability, we started an effort to integr=
ate OpenTelemetry into Bootique, and I hope this will come back to Cayenne =
as well. Would be nice to have otel spans for queries. But as your video de=
monstrates, explicit instrumentation is almost irrelevant these days. The t=
ools are so good... they can grab the logs, or do automated runtime instrum=
entation and show you transaction traces with next to zero effort.
>
> Andrus
>
>
>
> > On Jul 6, 2026, at 7:15=E2=80=AFPM, Hugi Thordarson <[email protected]> =
wrote:
> >
> > Hi Andrus,
> >
> > first =E2=80=94 that logging is a vast, vast improvement, I'm loving it=
!
> >
> > So happens I've been playing a lot with Cayenne's logging lately. Very =
happy about how easy it was/is to hook into query logging and I've used it =
to profile SQL-queries in my web application templates for years now =E2=80=
=94 keeping track of the time methods spend querying to find performance pr=
oblems (profiling/aggregating by bindings rather than methods really, in WO=
 terms) and watching the SQL they executed.
> >
> > Helpful, but has always been private utility logic for myself since it =
just prints ugly text reports and I never took the time to make it pretty a=
nd usable for others.
> >
> > But that was before Claude :). So now there's this: Inline SQL logging.=
 Probably easiest described through video =E2=80=94 https://www.youtube.com=
/watch?v=3DhoW1WusKSRo .
> >
> > =E2=80=A6works great with the new SQLLogger interface. Already ported, =
since I'll be switching to -SNAPSHOT (in dev only for a while, to test the =
behaviour of the new transaction setup, really looking forward to putting i=
t through it's paces).
> > Been using M2 in production since release and it works great, congrats =
on another awesome release  :).
> >
> > Cheers,
> > - hugi
> >
> >
> >
> >> On 6 Jul 2026, at 13:37, Andrus Adamchik <[email protected]> wrote:
> >>
> >> Hi,
> >>
> >> I wanted to highlight a few things in the upcoming M3. They are alread=
y on master, so maybe some brave souls can take it for a spin and give us f=
eedback :)
> >>
> >> 1. Cayenne no longer wraps selecting queries (or at least those it can=
 reliably identify as selecting) into transactions.
> >>
> >> I had a suspicion for years that we shouldn't be doing that. Now I was=
 able to vibecode real benchmarks on multiple databases, and time savings i=
n the JDBC layer with faster queries are about 2x! (as each useless "commit=
" is a separate command sent to DB that needs to be processed). But this me=
ans that for the first time Cayenne operates with Connection "autoCommit=3D=
true". So I'd appreciate feedback if this causes any weirdness with your Da=
taSources.
> >>
> >>
> >> 2. SQL logging changes. There are multiple changes. Some address opera=
tional concerns (saving hundreds of GB of storage space; single-line logs a=
re easier to parse), others are "quality of life":
> >>
> >> * No tx for selects (mentioned above) by itself cuts down on 2 log lin=
es per query
> >> * The new logger name is short and descriptive "cayenne-sql"
> >> * ERROR log level for queries that result in exceptions
> >> * SQL query logs are single-line. Parameters, timers, result counters,=
 generated keys are placed on one line and rendered in a compact format. Tx=
 wrapping is still done on separate lines (as a tx can include more than on=
e SQL statement)
> >>
> >> INFO cayenne-sql tx started
> >> INFO cayenne-sql INSERT INTO BINARY_PK_TEST1(BIN_ID, NAME) VALUES(?, ?=
) | bind:[BIN_ID:FBBC4034ED8F0214B2C559CF1029C1868A66F0D59208A36C9365126C24=
8C...,NAME:'master1'] updated:1 time_ms:0
> >> INFO cayenne-sql tx committed
> >>
> >> * Mnemonic table aliases. No more meaningless t0, t1, t2:
> >>
> >> INFO cayenne-sql SELECT p.ESTIMATED_PRICE, p.PAINTING_DESCRIPTION, p.P=
AINTING_TITLE, p.ARTIST_ID, p.GALLERY_ID, p.PAINTING_ID, g.GALLERY_ID, g.GA=
LLERY_NAME FROM PAINTING p LEFT JOIN GALLERY g ON p.GALLERY_ID =3D g.GALLER=
Y_ID | selected:1 time_ms:0
> >>
> >> * No alias for single-table queries
> >>
> >> INFO cayenne-sql - SELECT ESTIMATED_PRICE, PAINTING_DESCRIPTION, PAINT=
ING_TITLE, ARTIST_ID, GALLERY_ID, PAINTING_ID FROM PAINTING | selected:2 ti=
me_ms:0
> >>
> >>
> >> (I am also thinking of lowercasing the SQL so that logs don't look lik=
e they are screaming at you :))
> >>
> >> Andrus
> >>
> >>
> >>
> >>
> >
>