웹/Spring
JpaReporitory vs EntityManager
컴퓨터과학
2023. 9. 24. 22:50
가장 큰 차이점
JpaRepository는 빠른 개발과 표준 CRUD 연산에 초점을 맞춘 반면, EntityManager는 보다 세밀한 데이터베이스 연산과 엔터티 관리에 사용됩니다. 실제 프로젝트에서는 종종 두 인터페이스가 함께 사용되기도 합니다.
- 정의와 목적:
- JpaRepository: Spring Data JPA의 일부로 제공되는 인터페이스로, 주요 CRUD 연산을 위한 여러 메서드를 미리 정의해둔 것입니다. 사용자가 별도의 구현 없이 빠르게 데이터베이스 연산을 수행할 수 있게 해줍니다.
- EntityManager: JPA의 핵심 인터페이스로, 엔터티의 생명주기를 관리하며 데이터베이스와의 상호작용을 위한 API를 제공합니다. 보다 세밀한 데이터베이스 연산이 필요한 경우에 사용됩니다.
- 기능:
- JpaRepository: save, findAll, delete, findById 등의 기본 CRUD 연산을 위한 메서드가 미리 정의되어 있습니다. 또한, 쿼리 메서드의 이름 규칙을 따라 메서드를 정의함으로써 직접 쿼리를 작성하지 않고도 데이터베이스 연산을 수행할 수 있습니다.
- EntityManager: persist, merge, remove, find, createQuery 등의 메서드를 제공하여 직접 엔터티 객체와 데이터베이스 간의 상호작용을 수행할 수 있습니다. 사용자는 필요에 따라 JPQL (Java Persistence Query Language)나 Criteria API를 사용하여 복잡한 쿼리를 작성할 수 있습니다.
- 사용 시기:
- JpaRepository: 대부분의 표준적인 CRUD 연산이나 간단한 쿼리에 대한 처리를 할 때 사용됩니다. 빠른 개발 속도와 쉬운 유지보수를 위해 많이 활용됩니다.
- EntityManager: 특정 엔터티의 생명주기를 세밀하게 관리하거나, 복잡한 쿼리와 데이터베이스 연산을 수행할 필요가 있을 때 사용됩니다.
- 확장성:
- JpaRepository: 기본적인 메서드 외에도 사용자 정의 쿼리를 추가할 수 있습니다. 그러나 복잡한 연산을 수행하기 위해서는 종종 EntityManager를 사용해야 할 수도 있습니다.
- EntityManager: 사용자가 필요에 따라 완전히 맞춤화된 데이터베이스 연산을 수행할 수 있게 해줍니다.
제 코드가 JpaReporitory로 해결할수 있는 부분들까지 EntityManager로 작성했다는게 큰 미스였습니다.
그래서 세밀하게 db를 변경 시키는 작업이 아니면 JpaReporitory로 변경하도록 하려고 합니다.