jpa를 사용하는 경우 퍼시스턴스 처리에 대해
도메인 객체를 jpa로 바로 매핑해서 사용
도메인 객체는 순수하게 유지하고, jpa용 객체로 변환을 해서 사용
2가지 방식에 대해 다 장단점이 있고,
실제로도 두 방식 다 많이 사용되는 걸로 알고 있는데 영호님의 생각과 어떤 걸 선호하시는지 궁금합니다.
답변 1
6
데이터베이스는 소유권 관점에서 공유 데이터베이스(shared database) 와 애플리케이션 데이터베이스(application database)로 분류할 수 있습니다.
공유 데이터베이스는 소유권이 없는 다른 애플리케이션이나 다른 조직과 데이터베이스를 공유하기 때문에 데이터베이스 스키마를 원하는 방식으로 설계할 수 없습니다.
반면에 애플리케이션 데이터베이스는 하나의 애플리케이션 또는 조직이 통제권을 가지는 데이터베이스로 이 경우에는 데이터베이스 스키마를 원하는 방식대로 조정할 수 있습니다.
공유 데이터베이스를 사용하기 때문에 데이터베이스 스키마를 통제할 수 없다면 별도의 데이터 객체를 만들고 이를 JPA 엔티티로 매핑하는 2)번 방식을 사용하는 것이 유지보수 관점에서 유리합니다.
애플리케이션 데이터베이스를 사용하고 있다면 데이터베이스 스키마와 도메인 객체 양쪽 모두를 조율할 수 있기 때문에 JPA 엔티티를 도메인 객체로 사용하는 1)번 방식을 선택하는 것이 유리합니다.
애플리케이션 데이터베이스를 사용하는 상황에서 JPA를 위한 데이터 객체를 사용하는 것은 불필요한 매핑과 복잡성을 추가하기 때문에 개인적으로 선호하는 방법은 아닙니다.
다만 애플리케이션 데이터베이스를 사용하는 경우에도 레거시 데이터베이스 스키마가 너무 오래되고 복잡해서 마이그레이션하기 어렵다면 데이터 객체에 데이터를 로드한 후 다시 한번 JPA 엔티티와 매핑하는 2)번 방식을 사용해야 할 수도 있습니다.
상황에 따라 가장 실용적인 방식을 선택하시면 좋을것 같아요. :)
답변이 되었는지 모르겠네요. 🙂
자료 한번에 다운로드 받을 수 있게 좀 해주세요.
1
63
2
이 강의만 자료가 ppt네요.
1
95
1
DiscountPolicy의 구현체에 관련 질문 드려요!
1
62
2
강의 자료 관련 질문입니다! (2-4. 절차에서 객체로)
1
86
2
도메인 관련 질문이 있습니다!
1
113
2
영화, 상영, 예매 도메인 관계에 대한 질문
1
88
2
[오타제보] 6-4. 캡슐화
2
48
2
리스코프 치환원칙에 대해 질문드립니다!
2
74
2
책임주도 설계 적용에 대한 간단한 질문 남겨드립니다.
1
111
2
객체지향 설계에서 메서드를 설계할 때 궁금한 점이 있습니다.
2
73
2
도메인 모델을 잘 정의하기 위해서 어떻게 해야할까요?
1
113
2
getter 사용에 대한 질문입니다.
1
56
2
6-1. 변경과 설계 마지막 추상화 관련 질문 입니다.
1
59
3
객체 지향 설계 원칙에 대한 질문입니다
1
52
2
[5-1] Screening과 Movie의 의존관계에 대한 궁금증 질문입니다.
1
60
2
2-2. 변경과 의존성 / 데이터 내부 변경 시 setter가 변경의 여파를 흡수하는 방식은 어떤가요?
2
72
2
[5-1] DiscountPolicy의 getDiscountAmount 추상 메서드 관련 질문입니다,
1
59
2
2-4. 절차에서 객체로 / 도메인 구조를 따라 클래스 구조 변경 부분
1
82
2
질문 있습니다!
1
64
2
[강의 자료 오타 제보]
1
67
2
간접 참조에 대한 질문
1
136
2
3-1 강의 질문입니다.
1
108
2
책 두권 다 읽어봐야 할까요?
1
196
2
(질문 글) Movie와 Customer의 위치
1
93
2





