2010-07-14 2 views
0

...이 개체 란 무엇입니까?데이터베이스 쿼리에서 직접 생성 한 비즈니스 개체

더 정교하게 : 내 애플리케이션의 경우 메모리 내장 객체로 사용할 멋진 비즈니스 모델을 만들었습니다. 저장 공간이며 불가 지론입니다. 이제 저장소 계층에는 데이터베이스가 있습니다. 관련 테이블에서 필요한 모든 데이터를 선택/조인하는 등의 SQL 쿼리를 생성합니다 (더 적은 수 준). 일종의 "중간 계층"은 쿼리 결과를 가져와 모든 관계가있는 비즈니스 개체를 구성합니다.

질문 :이 접근 방식은 무엇이라고합니까? 모범 사례는 무엇입니까?

이 작업은 .NET C# 프로젝트에서 수행되지만이 디자인 관련 질문과 관련이 없습니다.

(나는 매우 유사하기 질문 441532을 발견하지만 난 더 많은 설계 입력에 관심이 있어요)

참고 :이 자동으로을 도구에 의존 ORM 접근 을하지 않는 응용 프로그램이 필요로하기 때문에 상대적으로 큰 데이터베이스의 선택된 데이터 만.

답변

1

ORM 또는 객체 관계형 매핑이라고 생각합니다.

NHibernate는 그러한 일의 한 예입니다.

+0

를보십시오. 몇 가지 (조인) SQL 쿼리에서 얻은 행에서 직접 비즈니스 개체를 작성하려고합니다. 나는 ORM 접근 방식을 완전히 건너 뜁니다. –

+0

데이터베이스에 데이터가 있고이를 도메인 개체에서 사용하려면 ORM을 수행해야합니다. 행 데이터 게이트웨이, 테이블 데이터 게이트웨이, 활성 레코드, 데이터 매퍼, DAO 등이라고합니다. –

+0

ORM은 클래스 당 하나의 테이블을 의미하지 않습니다. 기존 스키마에서 개체를 생성하거나 도메인 모델을 만들고 테이블을 뒤따라야합니다. 작성하려고 한 모든 조회에서 임의의 오브젝트를 작성하는 것은 또 다른 하나의 동물입니다. – duffymo

0

다른 ORM 도구가 있습니다. Linq와 SQL은 1 : 1로 수행합니다. 원하는 것은 아닙니다.

Domain Driven Design과 겹치는 부분은 디자인이 데이터베이스가 아닌 도메인에 의해 유도되는 부분입니다.

이 경우, 관계형 데이터베이스를 사용하는 경우 여전히 ORM이 필요하며 Entity Framework 및 NHibernate와 같은 ORM을 사용하면 원하는 방식으로 원하는 방식으로 엔티티를 유연하게 "매핑"할 수 있습니다. 어떤 이유로 든 데이터베이스를 변경해야하거나 Entity를 변경해야하는 경우 어떤 이유로 든 변경해야하는 것은 중간의 "매핑"레이어입니다. 1 데이터베이스 계층 (하나 개의 테이블 하나의 클래스) :

아니, 내가 1를 구축하고 있지 않다 fluent nhibernate

관련 문제