|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.vladmihalcea.hibernate.id.BatchSequenceGenerator
public class BatchSequenceGenerator
A sequence generator that uses a recursive query to fetch multiple values from a sequence in a single database access.
WITH RECURSIVE t(n) AS (
SELECT 1
UNION ALL
SELECT n + 1
FROM t
WHERE n < ?)
SELECT nextval(seq_xxx)
FROM t;
WITH t(n) AS (
SELECT 1 as n
FROM (VALUES 1)
UNION ALL
SELECT n + 1 as n
FROM t
WHERE n < ?)
SELECT next value for SEQ_CHILD_ID as n
FROM t;
SELECT next value for seq_parent_id
FROM UNNEST(SEQUENCE_ARRAY(1, ?, 1));
SELECT seq_xxx.nextval
FROM dual
CONNECT BY rownum <= ?
WITH t(n) AS (
SELECT 1 as n
UNION ALL
SELECT n + 1 as n
FROM t
WHERE n < ?)
SELECT NEXT VALUE FOR seq_xxx as n
FROM t
WITH RECURSIVE t(n, level_num) AS (
SELECT NEXT VALUE FOR seq_xxx as n, 1 as level_num
FROM rdb$database
UNION ALL
SELECT NEXT VALUE FOR seq_xxx as n, level_num + 1 as level_num
FROM t
WHERE level_num < ?)
SELECT n
FROM t
In theory any RDBMS that supports WITH RECURSIVE and
sequences is supported.
For more details about how to use it, check out this article on vladmihalcea.com.
| Field Summary | |
|---|---|
static int |
DEFAULT_FETCH_SIZE
The default value for FETCH_SIZE_PARAM. |
static String |
FETCH_SIZE_PARAM
Indicates how many sequence values to fetch at once. |
static String |
SEQUENCE_PARAM
Indicates the name of the sequence to use, mandatory. |
| Fields inherited from interface org.hibernate.id.PersistentIdentifierGenerator |
|---|
CATALOG, IDENTIFIER_NORMALIZER, PK, SCHEMA, TABLE, TABLES |
| Fields inherited from interface org.hibernate.id.IdentifierGenerator |
|---|
ENTITY_NAME, JPA_ENTITY_NAME |
| Constructor Summary | |
|---|---|
BatchSequenceGenerator()
|
|
| Method Summary | |
|---|---|
void |
configure(org.hibernate.type.Type type,
Properties params,
org.hibernate.dialect.Dialect dialect)
|
String |
determineBulkInsertionIdentifierGenerationSelectFragment(org.hibernate.dialect.Dialect dialect)
|
Serializable |
generate(org.hibernate.engine.spi.SessionImplementor session,
Object object)
|
Object |
generatorKey()
|
String[] |
sqlCreateStrings(org.hibernate.dialect.Dialect dialect)
Deprecated. |
String[] |
sqlDropStrings(org.hibernate.dialect.Dialect dialect)
Deprecated. |
boolean |
supportsBulkInsertionIdentifierGeneration()
|
String |
toString()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public static final String SEQUENCE_PARAM
public static final String FETCH_SIZE_PARAM
DEFAULT_FETCH_SIZE.
public static final int DEFAULT_FETCH_SIZE
FETCH_SIZE_PARAM.
| Constructor Detail |
|---|
public BatchSequenceGenerator()
| Method Detail |
|---|
public void configure(org.hibernate.type.Type type,
Properties params,
org.hibernate.dialect.Dialect dialect)
throws org.hibernate.MappingException
configure in interface org.hibernate.id.Configurableorg.hibernate.MappingExceptionpublic boolean supportsBulkInsertionIdentifierGeneration()
supportsBulkInsertionIdentifierGeneration in interface org.hibernate.id.BulkInsertionCapableIdentifierGeneratorpublic String determineBulkInsertionIdentifierGenerationSelectFragment(org.hibernate.dialect.Dialect dialect)
determineBulkInsertionIdentifierGenerationSelectFragment in interface org.hibernate.id.BulkInsertionCapableIdentifierGenerator
public Serializable generate(org.hibernate.engine.spi.SessionImplementor session,
Object object)
throws org.hibernate.HibernateException
generate in interface org.hibernate.id.IdentifierGeneratororg.hibernate.HibernateExceptionpublic Object generatorKey()
generatorKey in interface org.hibernate.id.PersistentIdentifierGenerator@Deprecated public String[] sqlCreateStrings(org.hibernate.dialect.Dialect dialect)
sqlCreateStrings in interface org.hibernate.id.PersistentIdentifierGenerator@Deprecated public String[] sqlDropStrings(org.hibernate.dialect.Dialect dialect)
sqlDropStrings in interface org.hibernate.id.PersistentIdentifierGeneratorpublic String toString()
toString in class Object
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||