도메인 객체, POCO 및 엔티티의 차이점은 무엇입니까?
나는 그들이 기본적으로 다 똑같다는 인상을 받았다.모델 오브젝트도 같습니까?
현재 아키텍처에는 다음과 같은 특징이 있습니다.
class Person
{
public string PersonId;
public string Name;
public string Email;
public static bool IsValidName() { /* logic here */ }
public static bool IsValidEmail() { /* logic here */ }
}
class PersonService
{
private PersonRepository pRepository;
PersonService()
{
pRepository = new PersonRepository();
}
public bool IsExistingEmail(string email)
{
//calls repo method to see if email is in db
}
public Person GetPerson(email)
{
return pRepository.Get(email);
}
public void SavePerson(Person p)
{
if (Person.IsValidEmail(p.Email) && !IsExistingEmail(p.Email)
{
pRepository.Save(p);
}
}
}
class PersonRepository
{
public void Save(Person p)
{
//save to db
}
public Person Get(string email)
{
//get from db
}
public bool IsExistingEmail(string email)
{
//see if email in db
}
}
중 이 '어느 클래스'입니까?POCO
,Domain Object
,Model object
,entity
내(비표준) Layman 정의
POCO
구 insertinsert %Insert_your_Language% 입니다.논리가 없는 타입.메모리에 데이터를 저장할 뿐입니다.이데올로기 때문에 을 사용하다Domain object
도메인에 관련된 클래스의 인스턴스입니다.로그, 시리얼화, 포맷 또는 암호화를 위해 제품을 빌드하는 경우를 제외하고 대부분의 경우 도메인 오브젝트에는 로깅, 포맷, 시리얼화, 암호화 등의 항목이 포함되지 않습니다.Model object
제 생각에는 똑같을 것 같아요.Domain object
사람들은 이것을 서로 바꿔서 사용하는 경향이 있다(내가 틀릴 수 있다).Entity
가진id
Repository
데이터 스토리지(예: 데이터베이스, 데이터 서비스 또는 ORM) 및 서비스, UI, 비즈니스 계층 또는 기타 요청 기관에 말하는 클래스입니다.의 모든 접속 풀링, 키 , 등)을, 하게 합니다.Service
일반적으로 공개 API를 통해 일부 기능을 제공하는 소프트웨어입니다.레이어에 따라서는 RESTful 자체 완결 컨테이너 또는 필요한 유형의 특정 인스턴스를 찾을 수 있는 클래스가 될 수 있습니다.
원답
이는 (분산형) 도메인 중심 설계에서 주로 사용되는 용어입니다.그들은 같지 않다.모델 객체라는 용어는 도메인 객체의 동의어로 사용할 수 있습니다.
도메인 오브젝트비즈니스 고유의 영역에서 도메인 익스퍼트에 의미 있는 무언가를 나타내는 오브젝트.도메인 개체는 대부분 엔티티 및 값 개체로 표시됩니다.일반적으로 도메인 계층에 존재하는 대부분의 개체는 모델에 기여하며 도메인 개체입니다.
엔티티. 기본적으로 그 속성이 아닌 연속성과 정체성의 스레드에 의해 정의된 객체입니다.(Id가 있어야 한다는 의미)
POCO. 복잡한 로직이 없는 단순한 오브젝트입니다.보통은 몇 가지 속성만을 가지며 ORM 또는 데이터 전송 오브젝트로 사용됩니다.
class Person
및 이 Object - 엔cocoPOCO, - - - - - - - 。
class PersonService
- 비스스
class PersonRepository
- 장소 -
기본적으로 내부 논리로 귀결된다
- 도메인 오브젝트에는 검증 등의 내부 도메인 로직이 있습니다.
- 모델은 기본적으로 가벼운 도메인 객체입니다.보유 데이터에 대해서는 알고 있지만 사용방법에 대해서는 아는 바가 없습니다.
- 엔티티는 데이터를 보유하고 있으며 데이터의 출처, 저장 위치, 업데이트 위치 등에 대한 내부 지식을 보유하고 있습니다.
- POCO는 데이터를 보유하고 있으며, 자산 컬렉션에 포함된 모든 항목의 총가치가 얼마인지와 같은 자체 정보에 대한 내부 지식이 있을 수 있습니다.
- DTO는 가장 단순한 항목입니다.데이터만 보관하고 논리는 없습니다.
기본적으로 모두 같은 용도로 사용됩니다. 얼마나 똑똑해지길 원하는지 알 수 있습니다.
당신의 코드 샘플 The Person 클래스는 도메인 오브젝트 또는 모델이 될 것이고, 나머지 2개는 서비스와 저장소입니다.도메인 오브젝트, Pocos, 모델, dtos 등은 메시지와 같이 사용되며 한 계층에서 다음 계층으로 전달됩니다.PersonService와 같은 서비스 클래스는 응용 프로그램의 계층이며 PersonRepository와 같은 Repository 클래스와 동일합니다.이 경우 기본적으로 dto인 데이터 엔티티를 사용하는 방법에 대해 설명합니다.http://bob-the-janitor.blogspot.com/2009/07/n-tier-design-revisit-part-1-over-view.html
함수에 대한 함의에 가깝습니다.도메인 오브젝트는 논리 실장에 고유한 것으로 단순한 POCO보다 복잡할 수 있습니다.엔티티에는 무언가를 나타내는 함의가 있습니다(통상은 지속성 미디어와 관련됨).POCO는 클래스의 빠른 식별자에 불과합니다.모델은 개체를 나타내는 데 사용되는 용어일 뿐입니다(일반적으로 상태를 포함하며 일반적으로 UI 또는 DB를 처리합니다).
기능적인 차이가 있는 것이 아니라, 단지 더 자세히 설명하기 위한 다른 용어일 뿐입니다.레이스카, 트럭, 패밀리 세단의 차이처럼요모두 자동차지만, 각각의 용어가 더 설명적이다.
위의 답변에는 도메인과 모델에 대한 좋은 설명이 이미 나와 있습니다.
Database-Context Entity는 엔티티 관계 모델의 항목(즉, 테이블의 행)을 의미합니다.
Microsoft-Dotnet-EntityFramework-World Entity는 Data(Base)를 사용하여 데이터베이스에서 로드 및 저장할 수 있는 개체를 의미합니다.맥락.일반적으로 엔티티는 데이터(베이스) 없이 존재할 수 없습니다.맥락.(단위-) 이러한 클래스의 비즈니스 기능을 테스트하는 것은 다릅니다.
Pocos(Plain Old Common Runtime Objects)는 Persistence Framework(Entity Framework 또는 NHibernate) 없이 존재할 수 있으므로 테스트하기가 훨씬 쉽습니다.
poco라는 단어는 같은 이유로 자바 월드에서 만들어진 pojo(일반적인 오래된 자바 객체)의 적응어이다.
도메인 개체는 응용 프로그램의 도메인 계층(예: 주소 클래스)에 있는 엔터티입니다."모델"은 동일한 의미입니다. "도메인 모델"의 엔티티입니다.
POCO(일반 CLR 객체)는 동작(메서드)이 정의되어 있지 않고 데이터(속성)만을 포함하는 객체입니다.POCO는 일반적으로 레이어 간에 데이터를 전송하기 위한 DTO(데이터 전송 객체)로 사용되며, 데이터는 도메인 객체/엔티티를 채우기 위해 일반적으로 사용됩니다.
언급URL : https://stackoverflow.com/questions/6154311/what-is-the-difference-between-domain-objects-pocos-and-entities
'programing' 카테고리의 다른 글
디렉토리에서 일부 파일을 제외한 모든 파일 제거 (0) | 2023.04.22 |
---|---|
Swift에서 난수를 생성하는 방법은 무엇입니까? (0) | 2023.04.22 |
Bash 인수에서 따옴표를 유지하는 방법 (0) | 2023.04.22 |
Swift에서 사전에 요소를 추가하는 방법은 무엇입니까? (0) | 2023.04.22 |
키가 첫 번째 열에 없는 Excel VLOOKUP (0) | 2023.04.17 |