
Id 어노테이션을 추가할 때 마다 선택지가 다음과 같이 떴다.
평소에는 그냥 엔터를 쳐서 넘겼는데 막상 인식하고 보니까 둘 중 하나를 선택해야하는 건가 하는 생각이 들어서 머뭇거리게 되었다.
그래서 일단 둘다 무엇인지 알아보기로 했다.
JPA(Java Persistence API) 를 제공하는 패키지
Jakarta Persistence defines a standard for management of persistence and object/relational mapping in Java(R) environments.(자바(R) 환경에서 영속성 및 객체/관계 매핑 관리를 위한 표준을 정의)
JPA 표준 API를 정의하며, JPA를 지원하는 모든 구현체(Hibernate, EclipseLink 등)에서 사용됨
JPA will only recognize javax.persistence.Id (now jakarta.persistence.Id). Otherwise it will throw an exception: Error creating bean with name 'entityManagerFactory' ... Entity has no identifier (every '@Entity' class must declare or inherit at least one '@Id' or '@EmbeddedId' property) stackoverflow.com
Spring Data 프로젝트에서 사용되는 주요 애노테이션(annotation)들이 포함된 패키지
주로 영속성(persistence) 처리와 데이터 모델링에 사용
Spring Data 전용으로 설계됨
MongoDB, Redis, Cassandra 등 다양한 데이터 저장소에서 공통적으로 사용 가능
org.springframework.data.annotation.Id is currently used by Spring to support mapping for other non relational persistence databases or frameworks that do not have a defined common persistence API like JPA. So, it is normally used when dealing with other spring-data projects such as spring-data-mongodb, spring-data-solr, etc. stackoverflow.com
javax.persistence.Id is the annotation defined by JPA for all its implementations. Have in mind JPA only applies for management of relational data. stackoverflow.com
간단하게 JPA는 자카르타, NoSQL 데이터베이스를 사용하는 경우는 springframework~를 쓴다.