programing

도메인 객체, POCO 및 엔티티의 차이점은 무엇입니까?

telebox 2023. 4. 22. 09:15
반응형

도메인 객체, 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 - 장소 -

기본적으로 내부 논리로 귀결된다

  1. 도메인 오브젝트에는 검증 등의 내부 도메인 로직이 있습니다.
  2. 모델은 기본적으로 가벼운 도메인 객체입니다.보유 데이터에 대해서는 알고 있지만 사용방법에 대해서는 아는 바가 없습니다.
  3. 엔티티는 데이터를 보유하고 있으며 데이터의 출처, 저장 위치, 업데이트 위치 등에 대한 내부 지식을 보유하고 있습니다.
  4. POCO는 데이터를 보유하고 있으며, 자산 컬렉션에 포함된 모든 항목의 총가치가 얼마인지와 같은 자체 정보에 대한 내부 지식이 있을 수 있습니다.
  5. 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

반응형