아직 명확한 답변을 찾지 못했고 명확히하기 위해 :nHibernate는 데이터베이스 객체를 대체 할 예정입니까?
nHibernate와 SQL 서버를 사용하면 저장 프로 시저, 뷰 및 트리거에 저장된 비즈니스 로직을 무시하거나 HQL 또는 응용 프로그램 코드로 마이그레이션해야합니다 ?
아직 명확한 답변을 찾지 못했고 명확히하기 위해 :nHibernate는 데이터베이스 객체를 대체 할 예정입니까?
nHibernate와 SQL 서버를 사용하면 저장 프로 시저, 뷰 및 트리거에 저장된 비즈니스 로직을 무시하거나 HQL 또는 응용 프로그램 코드로 마이그레이션해야합니다 ?
음, 모든 세부 정보는 제쳐두고 : 예.
NH는 객체 관계형 매퍼이며 '도메인 기반 디자인'이라는 아키텍처 스타일로 사용하기위한 것입니다. 중요한 점은 데이터를 저장하고로드하는 것 이외에는 데이터베이스를 완전히 무시한다는 것입니다.이 개념을 지속성 무시 (Persistence Ignorance)이라고하며 해당 좌우명은 입니다. 데이터베이스가 없습니다.
이 관점에서 비즈니스 로직을 저장 프로 시저 또는 다른 db 객체에 저장하는 것은 낙담 할뿐만 아니라 심각한 코드 냄새가 될 것입니다.
선호하는 도메인 기반 디자인 방법론을 따르는 경우 비즈니스 계층을 구축 할 때 db가 없기 때문에 비즈니스 로직을 db에 배치 할 수있는 기회가 없습니다.
NHibernate는 '도메인 기반'방법론을 사용하여 빌드 된 응용 프로그램에 매우 적합한 O/R 매퍼입니다.
이러한 응용 프로그램에서 도메인 모델은 비즈니스의 표현이 풍부한 객체 지향 모델입니다. 즉, '모델'에는 비즈니스 로직의 전부 또는 대부분이 포함됩니다.
그런 경우 비즈니스 로직을 저장 프로 시저에 넣을 상황은 거의 없습니다.
이렇게 많이 설명됩니다. 나는 많은 로직이 기존 데이터베이스 객체 내에 포함되어있는 기존의 데이터베이스 구조 위에 객체 "레이어"를 작성해야한다는 과제를 안고있었습니다. –
본인은 이에 동의하지만 NH이 저장 프로 시저 및 DDD가 아닌 데이터베이스를 잘 지원하므로 기존 데이터베이스가 기본 스타일을 따르지 않을 때도 사용할 수 있습니다. Google은 여러 데이터베이스 (DDD 및 NH 용으로 제작 된 앱) 및 매우 오래된 학교 용 앱에서 데이터 액세스에 NH를 사용합니다. –