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.
72 lines
6.3 KiB
Plaintext
72 lines
6.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 WidgetIdentity rows (GenerationType.IDENTITY) ---
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-1]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-2]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-3]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-4]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-5]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-6]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-7]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-8]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-9]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-10]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-11]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-12]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-13]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-14]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-15]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-16]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-17]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-18]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-19]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-20]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-21]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-22]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-23]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-24]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-25]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-26]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-27]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-28]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-29]
|
|
Hibernate: /* insert for com.ankurm.hibernatedemo.model.WidgetIdentity */insert into widget_identity (name,id) values (?,default)
|
|
binding parameter (1:VARCHAR) <- [identity-30]
|
|
entityInsertCount = 30
|
|
prepareStatementCount = 30
|
|
(with IDENTITY, expect prepareStatementCount to land close to entityInsertCount -- each insert has to go to the database immediately to hand back the generated key, so there is nothing left for hibernate.jdbc.batch_size to batch)
|