@Identity
With @Identity we can specify additional attributes for database identity and sequences and we can additionally apply this on the class level or on the property level.
It is useful to be able to specify @Identity
on the class level when using
@MappedBy
and the @Id property is inherited.
The additional properties we can specify include:
- start - start value
- cache - cache value (performance optimisation)
- generatedBy - By DEFAULT or ALWAYS
Example use on class
@Identity(generated = BY_DEFAULT, start = 1000, cache = 100)
@Entity
public class AuditLog {
...
Example use on property
@Entity
public class AuditLog {
@Id
@Identity(generated = BY_DEFAULT, start = 10000, cache = 1000)
long id;
...
start value
The start value is supported in DDL generation for H2, Postgres, Oracle and SQL Server sequences.
cache value
The cache value is an important performance optimisation available in some databases for tables that will have a lot of inserts. This specifies how many identity values the database should generate and cache ahead of time reducing the internal locking the database uses. Databases supporting this include Postgres, Oracle & NuoDB.
@Identity(type = APPLICATION)
We can use the ebean @Identity
annotation with type set to APPLICATION
to explicitly specify that the id value will be supplied by the application rather than
generated by Database Identity or Sequence.
@Id @Identity(type=APPLICATION) long id;