본문 바로가기

백엔드 개발/JPA

[하이버네이트 유저 가이드 파헤치기] 도메인 모델 - 2

반응형

Domain Model

도메인 모델이라는 용어는 데이터 모델링에서 유래되었다. 도메인 모델은 궁극적으로 당신이 작업하고 있는 문제 도메인을 설명하는 모델이다. 또한, 당신은 때때로 persistent classes라는 용어를 들어보았을 것이다.

 

궁극적으로 애플리케이션 도메인 모델은 ORM의 주요한 특성이다. ORM은 당신이 도메인 모델과 연결하기 원하는 클래스를 구성한다.

만약, POJO나 자바 프로그래밍 모델을 따르는 클래스라면 하이버네이트는 최고로 동작한다.

그러나, 이 규칙들은 전혀 어려운 요구사항이 아니다.

사실, 하이버네이트는 매우 조금만 당신의 persistent objects에 대해서 가정한다. (거의 가정하지 않는다는 뜻)

당신은 도메인 모델을 다른 방법으로도 표현할 수 있다. ( 예를 들어, java.util.Map 인스턴스를 활용해 트리 구조로 활용할 수 있음)

 

역사적으로 하이버네이트를 사용하는 애플리케이션은 도메인 모델과 클래스 매핑을 위한 적절한 XML 매핑 파일 형식을 사용해야 했었다.

JPA의 도입과 함께, 현재 대부분의 매핑 정보는 어노테이션(또는 표준화된 XML 형식)을 사용하여 ORM/JPA 구현체들 상호 간에 이식할 수 있는 방법으로 선언되고 있다.

이번 챕터에서는 되도록 JPA 매핑에 초점을 맞출 것이다. JPA가 제공하지 않는 하이버네이트 매핑 기능은 하이버네이트 확장 어노테이션을 선호할 것이다.

 

문제 도메인(Problem domain)이란?

1.
문제 도메인은 문제를 해결하기위해 검토해야 하는 응용 영역 혹은 전문 영역이다. 
문제 도메인은 간단하게 오직 개별 관심 주제들만 집중해야 하고, 다른 모든 것들은 제외해야 한다.
예를 들어, 의학에서 모범 사례를 측정하는 시스템을 개발할 때, 병원에 깔려있는 카펫은 문제 도메인에 포함하지 말아야 한다.
이번 예제의 의학같이 오직 분리된 관심사 영역 내에 있는 도메인과 연관 있는 주제만을 참조해야 한다.

2.
내가 통신 장비용 임베디드 소프트웨어를 작성하는 상황에서 문제 도메인은 이더넷, 음성 및 비디오 프로토콜일 것입니다.
다시 말하자면, 내가 프로그래밍하는 언어와 아무 관련이 없지만 소프트웨어를 작성하기 위해 여전히 이해해야 하는 모든 것입니다.
만약 사진 서비스 판매를 위한 웹사이트를 만든다면, 문제 도메인은 사진과 전자 상거래일 것입니다.
전투기용 펌웨어를 작성하는 경우에는 문제 도메인은 무기, 센서, 제어 시스템일 것입니다.

https://www.definitions.net/definition/problem+domain
https://softwareengineering.stackexchange.com/questions/125926/what-is-problem-domain

 

원문
The term domain model comes from the realm of data modeling. It is the model that ultimately describes the problem domain you are working in. Sometimes you will also hear the term persistent classes.

Ultimately the application domain model is the central character in an ORM. They make up the classes you wish to map. Hibernate works best if these classes follow the Plain Old Java Object (POJO) / JavaBean programming model. However, none of these rules are hard requirements. Indeed, Hibernate assumes very little about the nature of your persistent objects. You can express a domain model in other ways (using trees of java.util.Map instances, for example).

Historically applications using Hibernate would have used its proprietary XML mapping file format for this purpose. With the coming of JPA, most of this information is now defined in a way that is portable across ORM/JPA providers using annotations (and/or standardized XML format). This chapter will focus on JPA mapping where possible. For Hibernate mapping features not supported by JPA we will prefer Hibernate extension annotations.

 

하이버네이트 유저 가이드 원문 링크

반응형