You annotate a field or getter in your entity class with @Id. Hibernate maps this to the primary key column in the database.
🔹 Basic example:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) // auto-increment PK
private Long id;
private String username;
// getters and setters
}
✅ Here:
- The
idfield is the primary key, defined with@Id. @GeneratedValue(...)tells Hibernate how to generate the key (e.g., identity, sequence, UUID).
🔹 Primary key options in Hibernate:
✅ Simple primary key → one column mapped with @Id.
✅ Composite primary key → multiple columns combined, mapped with:
@Embeddable+@EmbeddedId→ recommended modern approach.- Or
@IdClass→ alternative but more verbose.
🔹 Composite key example:
@Embeddable
public class EnrollmentId implements Serializable {
private Long studentId;
private Long courseId;
}
@Entity
public class Enrollment {
@EmbeddedId
private EnrollmentId id;
private String grade;
}
🔹 Important notes:
✅ You must define a primary key in every JPA/Hibernate entity → Hibernate requires it to track entities.
✅ Without a primary key, Hibernate can’t map objects reliably → you’ll get errors at runtime.
✅ Key takeaway:
A primary key is a unique, non-null identifier for your entity’s rows.
In Hibernate, you define it with @Id (and optionally @GeneratedValue) or use @EmbeddedId/@IdClass for composite keys.