@Entity is JPA’s annotation to signal this is a JPA-managed type.
@Id is JPA’s annotation to flag the primary key.
@GeneratedValue is a JPA annotation to offload key generation to the JPA provider.
JPA requires a no-argument constructor method that is either public or protected.
We also have a constructor where the id field isn’t provided: a constructor designed for creating new entries in the database. When the id field is null, it tells JPA we want to create a new row in the table.