Skip to content

[DISCUSSION] driven-command에서 사용되는 JPA Config 관련 질문입니다. #27

@taewookimm

Description

@taewookimm

이슈 개요

@CreatedDate, @LastModifiedDate 사용을 위해 @EnableJpaAuditing 어노테이션을 JpaConfig 클래스를 만들어야 하나, @EnableJpaAuditing 어노테이션을 사용하지 않고 createdAt, updatedAt의 값을 수동으로 넣어주는 방식으로 가야 하나 고민이 생겼습니다.

부연 설명

해당 이슈에 대해 @github-insu 님과 먼저 의견을 나누었고, 같이 리서치를 했습니다.
JpaConfig를 작성하면 JPA 의존도가 높아져 나중에 DB 또는 ORM을 변경할 때 불필요한 작업이 생길까?라는 의문점도 생겼고, 그렇다기엔 JpaConfig로 관리를 하는 게 불필요한 중복 코드도 방지할 수 있고, 유지 보수에 좋다고 생각했습니다.

현재 저희가 진행하고 있는 헥사고날 아키텍처에 어떤 방식이 더 잘 어울릴지 고민이 되었습니다.
그래서 어떤 방식이 더 좋을지에 대해 팀원들의 생각이 궁금합니다!

JpaConfig, 직접구현 리서치 결과

JpaConfig

  • 장점
    • 표준화된 접근
    • 적용 범위 관리
    • 유지보수 용이
  • 단점
    • JPA 의존성
    • 커스터마이징 한계
    • 헥사고날 아키텍처와 충돌 가능성

직접 구현

  • 장점
    • JPA 의존성 제거
    • 높은 커스터마이징
    • 헥사고날 아키텍처 준수
  • 단점
    • 코드 중복 가능성
    • 직접 관리의 부담
    • 추가 구현 작업(다중쓰레드 환경에서 동기화 이슈 고려해야 할 수도 있습니다.)

@EnableJpaAuditing 설정 참고 ( @github-insu 님 리서치 결과 )

  • 헥사고날 아키텍처 관점에서 봐도 @EnableJpaAuditing이 Application 메인 클래스에 있으면 핵심 도메인 로직에 인프라스터럭처 코드(JPA코드)가 있는 것이라서 문제가 생길 수도 있다고 합니다.

Metadata

Metadata

Assignees

Labels

type: discussion질문 또는 논의. A question or discussion

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions