The @Id annotation is inherited from javax.persistence.Id, indicating the member
field below is the primary key of current entity. Hence, Hibernate and spring
framework as well as you can do some reflect works based on this annotation. For details please
check javadoc for Id
The @Generated Value annotation is to configure the way of increment of the
specified column (field). For example when using MySQL, you may specify auto
increment in the
definition of table to make it self-incremental, and then use
@GeneratedValue(strategy = GenerationType.IDENTITY)
In the Java code to
denote that you also acknowledged to use this database server side strategy.
Also, you may change the value in this annotation to fit different
requirements.
1. Define Sequence in database
For instance, Oracle has to use sequence as increment method, say we create a
sequence in Oracle:
create
sequence oracle_seq;
2. Refer the database sequence
Now that we have the sequence in database, but we need to
establish the relation between Java and DB, by using @SequenceGenerator:
@SequenceGenerator(name="seq",sequenceName="oracle_seq")
sequenceName is the real name of a sequence in Oracle, name is what you want to call it in Java. You
need to specify sequenceName if it is different from name, otherwise just use name. I usually ignore sequenceName to save my time.
3. Use sequence in Java
Finally, it is time to make use this sequence in Java. Just add @GeneratedValue:
@GeneratedValue(strategy=GenerationType.SEQUENCE,
generator="seq")
The generator field refers to which sequence generator you want to use.
Notice it is not the real sequence name in DB, but the name you specified
in name field of SequenceGenerator.
4. Complete
So the complete
version should be like this:
public class MyTable
{
@Id
@SequenceGenerator(name="seq",sequenceName="oracle_seq")
@GeneratedValue(strategy=GenerationType.SEQUENCE,
generator="seq")
private Integer pid;
}
Now start using these
annotations to make your JavaWeb development easier.
Happy Coding :)