inflearn logo
강의

Khóa học

Chia sẻ kiến thức

JPA & Dữ liệu Spring Khái niệm cơ bản về JPA

Cơ bản về JPA 02 Cấu trúc mã & bối cảnh kiên trì

도메인과 JPA 엔티티

Đã giải quyết

823

yhwjd

18 câu hỏi đã được viết

0

도메인과 JPA 엔티티를 구분하려고 코드를 작성해봤습니다.

@Repository

@RequiredArgsConstructor
public class OrderRepositoryImpl implements OrderRepository {

private final OrderJpaRepository orderJpaRepository;


@Override
public void save(final OrderJpaEntity entity) {
orderJpaRepository.save(entity);
}

@Override
public Optional<OrderJpaEntity> findById(final long orderId) {
return orderJpaRepository.findById(orderId)
}
}

이러한 방식으로 JpaRepository를 주입받고 OrderRepository를 구현하는 방식입니다.

public interface OrderRepository {

void save(final OrderJpaEntity entity);

Optional<OrderJpaEntity> findById(final long orderId);
}

 

그런데 이때 변경감지를 사용하려면 Order가 아닌 OrderJpaEntity를 반환해야하는데 이렇게 하면 결국 Repository에도 JPA 엔티티에 의존하기 때문에 분리를 잘 하지 못했다는 생각이 듭니다..

혹시 도메인과 JPA 엔티티를 분리한다면 어떠한 방식으로 하시나요?

spring jpa

Câu trả lời 1

1

madvirus0123

우선 개인적으로는 너무 완벽하게 JPA에 대한 의존을 제거하려고 노력하지 않아도 된다고 생각합니다. 큰 틀에서 구조를 깨뜨리지 않는 선에서 JPA에 의존하는 정도는 허용해도 괜찮다고 봅니다.

Order와 OrderJpaEntity를 꼭 분리해야 한다면 Order를 인터페이스나 추상 클래스로 만들고 OrderJpaEntity는 Order를 상속받는 구조를 가져가는 방법이 있습니다. 이때

  • 리포지토리는 save나 find에서 Order 타입을 사용하고

  • 리포지토리 인터페이스를 구현한 클래스는 내부적으로 OrderJpaEntity를 사용합니다.

유사한 방식으로 Order 인터페이스/추상 클래스가 있고, 이 Order를 상속받은 클래스가 내부에 필드로 JPA용 엔티티를 필드로 가져서 변경이 발생하면 전파하는 방법을 사용할 수도 있을 듯 합니다.

하지만 이렇게 해서 얻게 되는 실질적인 이점이 무엇이 있는지는 한 번 고민해 볼 필요가 있습니다.

트래잭션 전파 기본- 에 대한 개념 질문? 이렇게 생각해도 맞나요?

0

4

0

헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.

0

17

2

h2 database

0

11

0

별첨자료 URL 들어가면 404 떠요..

0

16

2

Request DTO에서 Entity를 생성할 때 의존성 방향을 반대로 하면 어떨까요?

0

38

2

스프링 부트 버전 질문

0

56

2

Querydsl 설정 할때 - run and test 다르게 설정 할때? 질문

0

43

1

new 패키지명.Dto명 생략가능

0

51

2

변경감지(더티체킹) 이후 플러시할 경우의 쿼리

0

47

1

Spring AI 프레임워크를 사용하지 않은 이유

0

51

1

단일 테이블 시 null 값과 연관관계 필요성 질문

0

45

1

SpringBoot4 버전 Hibernate5JakartaModule 라이브러리 오류

0

45

1

aws 관련 질문드립니다.

1

56

3

강사님 질문 있어요.

0

50

2

RestTemplate과 webClient, RestClient에 대해서 질문드립니다.

0

55

2

회원 도메인 인터페이스 개발

0

50

1

setter 사용하지 않기

0

42

1

git 링크 안들어가져요 404에러

0

484

1

JoinColumn 질문

0

466

1

1:N 매핑과 해당 방식 차이가 뭔가요?

0

530

2

10강 3:37 질문

0

340

1

7강에서 SecondaryTable을 왜 사용하지 모르겠습니다.

0

660

1

JPA 실무 @Entity을 @Embeddable 대체하는 경우가 많은가요?

0

561

1

상속 관계 엔티티 로직을 분기처리 하는 법?

0

371

1