Primary Keys

A primary key is the identity of a given entity bean. Every entity bean must have a primary key, and it must be unique. Primary keys can map to one or more properties and must map to one of the following types: any Java primitive type (including wrappers), java.lang.String, or a primary-key class composed of primitives and/or strings. Let’s first focus on simple one-property primary keys.

@Id

The @javax.persistence.Id annotation identifies one or more properties that make up the primary key for your table:

package javax.persistence;

@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface Id
{
}

You can generate the primary key for your entity beans manually or have the persistence provider do it for you. When you want provider-generated keys, you have to use the @javax.persistence.GeneratedValue annotation:

package javax.persistence;

@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface GeneratedValue
{
   GenerationType strategy() default AUTO;
   String generator() default "";
}

public enum GenerationType
{
   TABLE, SEQUENCE, IDENTITY, AUTO
}

Persistence providers are required to provide key generation for primitive primary keys. You can define the type of primary generator you would like to have using the strategy() attribute. The GeneratorType.AUTO strategy is the most commonly used configuration, and it is the default:

/**
 * Primary key
 */
@Id
@GeneratedValue
private Long id;

Table Generators

The TABLE strategy designates a user-defined relational table from which ...

Get Enterprise JavaBeans 3.1, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.