programing

Spring Entity Manager와 Spring Data Repository의 차이점은 무엇입니까?

muds 2023. 8. 19. 10:57
반응형

Spring Entity Manager와 Spring Data Repository의 차이점은 무엇입니까?

저는 웹사이트에서 JPA를 사용하고 있습니다.데이터 저장을 위한 옵션을 검토한 후 2가지 접근법을 발견했습니다.첫 번째 접근 방식은 javax.persistence 구현을 사용하는 것입니다.엔티티 관리자.LocalContainerEntityManagerFactoryBean을 사용하여 EntityManager 인스턴스를 인스턴스화했습니다.EntityManager 인스턴스를 가져오면 이 인스턴스를 사용하여 엔티티를 저장할 수 있습니다.예를들면,

entityManager.merge(someEntity);

다른 옵션은 org.springframework.data.repository 인스턴스를 사용하는 것입니다.크루드 저장소.첫째, CrudRepository의 인스턴스를 얻으면 엔티티를 저장하는 데 사용할 수 있습니다.예를들면,

aCrudRepository.save(someEntity);

엔터티 관리자와 CrudRepository를 사용하여 엔터티를 데이터베이스에 유지하는 것의 차이점은 무엇입니까?두 가지 접근 방식(엔티티 관리자 대 크루드 저장소)의 이점 또는 단점은 무엇입니까?

Java/Spring에서 영구 데이터를 사용하는 작업에는 여러 계층이 계층은 다음과 같습니다.

  • JDBC
  • Jdbc 템플릿
  • JPA(포함)EntityManager)
  • 스프링 데이터 JPA(포함)Repository)

각 추상화는 개발자를 하위 수준의 세부 정보로부터 보호하지만 자체적인 복잡성을 가져올 수 있습니다.JdbcTemplate는 일반 JDBC에 대한 얇은 추상화입니다.Repository에 대한 추상화입니다.EntityManager그것은 개발자들을 몇 가지 복잡한 세부 사항으로부터 보호합니다.EntityManager그리고 상용구 코드와 많은 편리한 방법들을 추가합니다.

예를 들어.CrudRepository의 구현을 추가합니다.findAll()이는 매우 일반적이기 때문에 사전 정의하는 것이 타당합니다.리포지토리에는 엔티티 자체(예: 쿼리)에서 메서드 이름(구성에 대한 컨벤션)에서 쿼리를 생성하는 여러 가지 편리한 방법이 있습니다.쿼리 DSL과 함께 nice typesafe Fluent API를 사용하거나 동적 투영을 사용할 수 있습니다.

이 두 인터페이스는 두 가지 다른 접근 방식을 제공합니다.

  • org.springframework.data.repository.CrudRepositoryCRUD 작업을 제공하는 리포지토리의 공통 인터페이스입니다.
  • javax.persistence.EntityManager지속성 컨텍스트와 연결되어 있습니다.스프링에는 확장되는 자체 인터페이스가 있습니다.CrudRepository이 목적을 위해 호출되었습니다.

지속적인 API의 장점과 단점에 대해 알아주셨으면 합니다.그렇지 않으면 이 질문에 대한 답을 읽을 수 있습니다.

언급URL : https://stackoverflow.com/questions/14621495/what-is-the-difference-between-an-spring-entity-manager-and-spring-data-reposito

반응형