인프런 커뮤니티 질문&답변

뿌뿌님의 프로필 이미지
뿌뿌

작성한 질문수

오브젝트 - 기초편

5-4-예제. 애플리케이션 객체 추가하기

jpa를 사용하는 경우 퍼시스턴스 처리에 대해

해결된 질문

작성

·

251

·

수정됨

1

  1. 도메인 객체를 jpa로 바로 매핑해서 사용

  2. 도메인 객체는 순수하게 유지하고, jpa용 객체로 변환을 해서 사용

2가지 방식에 대해 다 장단점이 있고,

실제로도 두 방식 다 많이 사용되는 걸로 알고 있는데 영호님의 생각과 어떤 걸 선호하시는지 궁금합니다.

답변 1

4

조영호님의 프로필 이미지
조영호
지식공유자

데이터베이스는 소유권 관점에서 공유 데이터베이스(shared database) 와 애플리케이션 데이터베이스(application database)로 분류할 수 있습니다.

공유 데이터베이스는 소유권이 없는 다른 애플리케이션이나 다른 조직과 데이터베이스를 공유하기 때문에 데이터베이스 스키마를 원하는 방식으로 설계할 수 없습니다.

반면에 애플리케이션 데이터베이스는 하나의 애플리케이션 또는 조직이 통제권을 가지는 데이터베이스로 이 경우에는 데이터베이스 스키마를 원하는 방식대로 조정할 수 있습니다.

공유 데이터베이스를 사용하기 때문에 데이터베이스 스키마를 통제할 수 없다면 별도의 데이터 객체를 만들고 이를 JPA 엔티티로 매핑하는 2)번 방식을 사용하는 것이 유지보수 관점에서 유리합니다.

애플리케이션 데이터베이스를 사용하고 있다면 데이터베이스 스키마와 도메인 객체 양쪽 모두를 조율할 수 있기 때문에 JPA 엔티티를 도메인 객체로 사용하는 1)번 방식을 선택하는 것이 유리합니다.

애플리케이션 데이터베이스를 사용하는 상황에서 JPA를 위한 데이터 객체를 사용하는 것은 불필요한 매핑과 복잡성을 추가하기 때문에 개인적으로 선호하는 방법은 아닙니다.

다만 애플리케이션 데이터베이스를 사용하는 경우에도 레거시 데이터베이스 스키마가 너무 오래되고 복잡해서 마이그레이션하기 어렵다면 데이터 객체에 데이터를 로드한 후 다시 한번 JPA 엔티티와 매핑하는 2)번 방식을 사용해야 할 수도 있습니다.

상황에 따라 가장 실용적인 방식을 선택하시면 좋을것 같아요. :)

답변이 되었는지 모르겠네요. 🙂

 

뿌뿌님의 프로필 이미지
뿌뿌

작성한 질문수

질문하기