Adds a JUnit test suite (GetVsGetReferenceTest, MergeRefreshTest, OptimisticLockTest, IdentityBatchTest, SequenceBatchTest, AllocationSizeSweepTest, BatchSizeSweepTest) so every surprising behavior described in the three companion posts has a reproducible test, alongside the original CommandLineRunner scenarios. Rewrites all three doc chapters and the README around the new experiments: the get()/getReference() same-session matrix, the merge()/refresh() experiments (including exactly when OptimisticLockException surfaces and a corrected LAZY-plus- cascade merge() result), and two new sweeps (allocationSize, batch_size) for batch inserts.
105 lines
7.3 KiB
Plaintext
105 lines
7.3 KiB
Plaintext
Hibernate: create global temporary table HTE_book(rn_ integer not null, id bigint, version bigint, author varchar(255), title varchar(255), primary key (rn_)) transactional
|
|
Hibernate: create global temporary table HTE_widget_sequence(rn_ integer not null, id bigint, name varchar(255), primary key (rn_)) transactional
|
|
Hibernate: create table book (id bigint not null, author varchar(255), title varchar(255), version bigint not null, primary key (id))
|
|
Hibernate: create table widget_identity (id bigint generated by default as identity, name varchar(255), primary key (id))
|
|
Hibernate: create table widget_sequence (id bigint not null, name varchar(255), primary key (id))
|
|
Hibernate: create sequence book_seq start with 1 increment by 50
|
|
Hibernate: create sequence widget_seq start with 1 increment by 25
|
|
--- inserting 30 WidgetSequence rows (GenerationType.SEQUENCE, allocationSize=25) ---
|
|
Hibernate: select next value for widget_seq
|
|
Hibernate: select next value for widget_seq
|
|
Hibernate: select next value for widget_seq
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-1]
|
|
binding parameter (2:BIGINT) <- [1]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-2]
|
|
binding parameter (2:BIGINT) <- [2]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-3]
|
|
binding parameter (2:BIGINT) <- [3]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-4]
|
|
binding parameter (2:BIGINT) <- [4]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-5]
|
|
binding parameter (2:BIGINT) <- [5]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-6]
|
|
binding parameter (2:BIGINT) <- [6]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-7]
|
|
binding parameter (2:BIGINT) <- [7]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-8]
|
|
binding parameter (2:BIGINT) <- [8]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-9]
|
|
binding parameter (2:BIGINT) <- [9]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-10]
|
|
binding parameter (2:BIGINT) <- [10]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-11]
|
|
binding parameter (2:BIGINT) <- [11]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-12]
|
|
binding parameter (2:BIGINT) <- [12]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-13]
|
|
binding parameter (2:BIGINT) <- [13]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-14]
|
|
binding parameter (2:BIGINT) <- [14]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-15]
|
|
binding parameter (2:BIGINT) <- [15]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-16]
|
|
binding parameter (2:BIGINT) <- [16]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-17]
|
|
binding parameter (2:BIGINT) <- [17]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-18]
|
|
binding parameter (2:BIGINT) <- [18]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-19]
|
|
binding parameter (2:BIGINT) <- [19]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-20]
|
|
binding parameter (2:BIGINT) <- [20]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-21]
|
|
binding parameter (2:BIGINT) <- [21]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-22]
|
|
binding parameter (2:BIGINT) <- [22]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-23]
|
|
binding parameter (2:BIGINT) <- [23]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-24]
|
|
binding parameter (2:BIGINT) <- [24]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-25]
|
|
binding parameter (2:BIGINT) <- [25]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-26]
|
|
binding parameter (2:BIGINT) <- [26]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-27]
|
|
binding parameter (2:BIGINT) <- [27]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-28]
|
|
binding parameter (2:BIGINT) <- [28]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-29]
|
|
binding parameter (2:BIGINT) <- [29]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetSequence */insert into widget_sequence (name,id) values (?,?)
|
|
binding parameter (1:VARCHAR) <- [sequence-30]
|
|
binding parameter (2:BIGINT) <- [30]
|
|
entityInsertCount = 30
|
|
prepareStatementCount = 4
|
|
(with SEQUENCE, the id is known before the row is written, so Hibernate can defer and batch the inserts -- expect prepareStatementCount well below entityInsertCount)
|