Other than the javadocs, are these documented anywhere?

* public String getSequenceNextValString(String sequenceName)
* public String getSelectSequenceNextValString(String sequenceName)

I have been following their usage throughout the codebase, but it is not easy.

Is getSequenceNextValString only used in place of single values? E.g. INSERT 
INTO NEW_USER VALUES (SEQ_USER.NEXTVAL, 'Adams', 'John') ? Or are there other 
uses?

Is getSelectSequenceNextValString only used to get the "batch" for Hibernate's 
future issuance of ids?

The reason I am asking is we would like to leverage the MS SQL Server's 
sp_sequence_get_range . By using the approach of using the stored procedure for 
Hibernate's allocation and otherwise using an increment by 1 allows higher 
efficiency with the Hibernate based application and prevent breaking legacy 
access to the table/use of the sequence. This topic was unclearly broached in 
HHH-10130. Internet research below...

Take the following example:

CREATE SEQUENCE [dbo].[hibernate_sequence2] 
 AS [bigint]
 START WITH 1
 INCREMENT BY 1
 CACHE 200
;
CREATE TABLE [MyTable2]
(
    [ID] [bigint] PRIMARY KEY NOT NULL DEFAULT (NEXT VALUE FOR 
[dbo].[hibernate_sequence2]),
    [Title] [nvarchar](64) NOT NULL
);

insert into MyTable2 (Title) values ('test 1');
insert into MyTable2 (Title) values ('test 2');
insert into MyTable2 (Title) values ('test 3');
insert into MyTable2 (Title) values ('test 4');
select * from MyTable2;

--ID    Title
--1     test 1
--2     test 2
--3     test 3
--4     test 4

DECLARE @range_first_value_output sql_variant ;
declare @range_size int=50+1;  
DECLARE @sequence_increment  sql_variant ;   
declare @range_last_value sql_variant;

EXEC sys.sp_sequence_get_range  
@sequence_name = N'[dbo].[hibernate_sequence2]'
, @range_size = @range_size
, @range_first_value = @range_first_value_output OUTPUT
, @sequence_increment = @sequence_increment OUTPUT
, @range_last_value =  @range_last_value OUTPUT ;  
  
SELECT @range_first_value_output AS FirstNumber, @sequence_increment as 
sequence_increment, @range_last_value  as range_last_value  ;

--FirstNumber   sequence_increment      range_last_value
--     5                1                      55

insert into MyTable2 (Title) values ('test 5');
select * from MyTable2;

--ID    Title
--1     test 1
--2     test 2
--3     test 3
--4     test 4
--56    test 5

I know there are issues of "knowing" the @SequenceGenerator(allocationSize), 
but I will assume a fixed 50 for now.

Internet research and other useless links...
1: Not hibernate, but same goal - 
https://groups.google.com/forum/#!topic/ebean/wG6VyVfEMQk
2: Not helpful - 
https://stackoverflow.com/questions/17780394/hibernate-identity-vs-sequence-entity-identifier-generators
3: Closest Hibernate Hit - https://hibernate.atlassian.net/browse/HHH-10130
4: My google searches - 
https://www.google.com/search?safe=off&q=%22sp_sequence_get_range%22+hibernate 
and https://www.google.com/search?safe=off&q=%22sp_sequence_get_range%22+jpa 
5: An interesting discussion, but not applicable - 
https://hibernate.atlassian.net/browse/HHH-10560
6: Sequences Added to SQL Server Dialect - 
https://hibernate.atlassian.net/browse/HHH-8440
7: My JIRA search - 
https://hibernate.atlassian.net/browse/HHH-6950?jql=(text%20~%20sequence%20or%20text%20~%20sp_sequence_get_range%20)%20and%20(text%20~%20SQLServer%20or%20text%20~%20%22SQL%20Server%22%20or%20text%20~%20SQLServer2012Dialect%20or%20text%20~%20SQLServer2008Dialect%20or%20text%20~%20SQLServer2005Dialect%20or%20text%20~%20SQLServerDialect)


-Jason


--
Jason Pyeron  | Architect
PD Inc        |
10 w 24th St  |
Baltimore, MD |
 
.mil: jason.j.pyeron....@mail.mil
.com: jpye...@pdinc.us
tel : 202-741-9397




_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to