package io.ebean.config.dbplatform; import io.ebean.Transaction; /** * Generates unique id's for objects. This occurs prior to the actual insert. * <p> * Note that many databases have sequences or auto increment features. These can * be used rather than an IdGenerator and are different in that they occur * during an insert. IdGenerator is used to generate an id <em>BEFORE</em> the * actual insert. * </p> */ public interface PlatformIdGenerator { /** * The name of the default UUID generator. */ String AUTO_UUID = "auto.uuid"; /** * Return the name of the IdGenerator. For sequences this is the sequence * name. */ String getName(); /** * Return true if this is a DB sequence. */ boolean isDbSequence(); /** * return the next unique identity value. * <p> * Note the transaction passed in can be null. * </p> */ Object nextId(Transaction transaction); /** * Is called prior to inserting OneToMany's as an indication that a number of * beans are likely to need id's shortly. * <p> * Can be used as a performance optimisation to prefetch a number of Id's. * Especially when the allocateSize is very large. * </p> */ void preAllocateIds(int allocateSize); }