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.

👨‍💻 Exemplo prático

@Entity
@Table(name="pessoas")
public class Pessoa{
	@Id	
	private Long id;
	// Demais atributos e métodos
}

Anotação @GeneratedValue

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.

👨‍💻 Exemplo prático

@Entity
@Table(name="pessoas")
public class Pessoa{
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	// Demais atributos e métodos
}