2010-05-20 5 views
2

우리는 기존의 엔터티 집합 (현재 MSSQL 데이터베이스에 대해 NHibernate로 유지되는 POCO)을 마이그레이션하여 일부 종류의 웹 서비스 (아직 빌드되지 않음, RESTful 또는 SOAP 기반, 우리가 관리하는).서비스 래핑 데이터 소스에 대한 ORM

나는 NHibernate가 영속성 문제를 캡슐화하는 방법을 좋아하고 논리가 풍부하고 지속성에 영향을받지 않는 도메인 모델을 유지 관리 할 수 ​​있습니다. SQL 데이터베이스 대신 백엔드에서 웹 서비스에 대해 NHibernate와 직접 대화 할 수있는 방법이 있습니까? 즉, "SQL 데이터베이스 대신 서비스"를 지속성 구현 세부 사항으로 간주하여 NHibernate를 계속 사용할 수 있습니까?

올바른 질문을하고 있습니까? :)

+0

답변 해 주셔서 감사합니다. NHibernate는 엔티티를 관계형 데이터로 매핑하기위한 것이라는 것을 알고 있습니다. 덜 목적은 있지만 그 목적을 위해 여전히 사용하려고합니다. 클라이언트 측 엔터티를 RESTful 인터페이스 뒤에있는 관계형 데이터로 매핑하고 싶습니다. 나는 여전히 그것을 ORM이라고 생각하지만, SQL 이외의 다른 메커니즘을 사용하여 데이터 저장소에 말합니다. 아마도 ADO.NET Data Services를 봐야합니다. SQL을 제출하여 RESTful 서비스 호출로 변환 할 수있는 클라이언트 계층이있는 경우 NHibernate가 여전히 그 작업을 수행 할 수 있습니다. – blaster

답변

1

NHibernate는 ORM입니다. 오브젝트와 관계형 테이블을 맵핑합니다. 객체와 웹 서비스 간에는 매핑되지 않습니다. 지속성 지향 웹 서비스에 대해 다른 API를 사용해야합니다. NHibernate 레이어 (관계형 데이터베이스 용)와 웹 서비스 레이어가 하나의 API처럼 보이도록 구현 한 인터페이스 세트를 생성 할 수 있습니다.

0

질문은 유효하지만 불행히도 대답은 아니오입니다. 이상적으로는 서비스의 소비자와 관련된 객체를 반환하도록 서비스를 설계하고 NHibernate를 사용하여 데이터베이스에서 데이터를 가져와 서비스에서 소비자에게 반환 할 수 있습니다.

저는 실제로 요 전날 귀하의 서비스 계층을 통해 데이터를 노출하는 것에 대한 흥미로운 기사를 읽었습니다. http://davybrion.com/blog/2010/05/why-you-shouldnt-expose-your-entities-through-your-services/ 응용 프로그램에 데이터를 제공 할 때 서비스의 역할이 무엇인지에 대한 흥미로운 관점이었습니다.

관련 문제