
Spring Boot 프로젝트에서 @Id를 사용할 때 패키지 경로를 잘못 지정하면, 예상치 못한 오류가 발생할 수 있습니다.
특히 JPA를 사용할 때와 Spring Data를 사용할 때 @Id의 패키지가 다르기 때문에 주의해야 합니다.
이번 글에서는 @Id의 차이를 살펴보고, 올바른 사용법을 정리해 보겠습니다.
@Id는 엔티티(Entity)의 기본 키(Primary Key)를 지정하는 어노테이션입니다.
이 어노테이션은 Spring Data와 JPA에서 서로 다른 패키지를 사용하므로 주의해야 합니다.
| 사용 목적 | 패키지 | 설명 |
|---|---|---|
| JPA (RDBMS) | jakarta.persistence.Id | MySQL, PostgreSQL, H2 등 RDBMS 사용 |
| Spring Data (NoSQL) | org.springframework.data.annotation.Id | MongoDB, Elasticsearch 등 NoSQL 사용 |
JPA를 사용할 때는 반드시 jakarta.persistence.Id를 사용해야 합니다.
📌 예제 코드 (JPA + MySQL)
import jakarta.persistence.*;
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // 기본 키
@Column(nullable = false)
private String title; // 제목
@Column(nullable = false, length = 1000)
private String content; // 내용
}
✅ JPA에서 @Id와 함께 @GeneratedValue 사용
📌 Gradle에서 JPA 설정
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'mysql:mysql-connector-j:8.0.33'
}
NoSQL 데이터베이스를 사용할 경우, org.springframework.data.annotation.Id를 사용해야 합니다.
📌 예제 코드 (MongoDB + Spring Data)
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "posts")
public class NoSqlPost {
@Id
private String id; // MongoDB의 기본 키
private String title;
private String content;
}
📌 MongoDB 사용 시 Gradle 설정
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
}
아래와 같이 JPA 프로젝트에서 org.springframework.data.annotation.Id를 사용하면 오류가 발생할 수 있습니다.
import org.springframework.data.annotation.Id; // ❌ 잘못된 패키지
@Entity
public class Post {
@Id // ❌ Spring Data의 @Id를 사용하면 오류 발생 가능
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
Spring Boot에서 @Id 어노테이션을 사용할 때는 데이터베이스 유형에 따라 올바른 패키지를 선택해야 합니다.
특히 JPA를 사용할 경우 반드시 jakarta.persistence.Id를 사용해야 하며,
NoSQL(MongoDB)에서는 org.springframework.data.annotation.Id를 사용해야 합니다.
🚀 Spring Boot 프로젝트에서 @Id 설정할 때 이 글을 참고하면 더 이상 혼동할 일이 없을 거예요!