A anotação @Id, como o próprio nome já sugere, diz respeito a definição da chave primária da tabela a qual está vinculada a classe em nosso modelo ORM. Dessa forma o Spring irá vincular essa propriedade como a chave primária da tabela em questão.
@Entity
@Table(name="pessoas")
public class Pessoa{
@Id
private Long id;
// Demais atributos e métodos
}
A anotação @GeneratedValue nos permite definir qual estratégia utilizaremos para a geração de valores para o campo em questão.
Com o uso dessa propriedade, podemos por exemplo definir a criação em número único e incremental para a chave primária da tabela vinculada a classe em questão. Vejamos um exemplo prático.
@Entity
@Table(name="pessoas")
public class Pessoa{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// Demais atributos e métodos
}