NHibernate와 Fluent NHibernate를 사용하여 프로젝트를 개발하기 시작했는데 혼란 스럽습니다. 프로젝트가 다음 달에 더 복잡해질 것이므로 코드를 Persistence Layer 및 Business Logic 레이어와 같은 논리적 레이어로 구조화하고 싶습니다.NHibernate 아키텍쳐와 비즈니스 로직
나는 논리와 유효성 검사가 포함 된 Patient라는 비즈니스 개체를 가지고 있습니다.
- 환자 클래스를 Fluent NHibernate 매핑 클래스로 매핑해야합니까?
- 또는지도 클래스가 PatientDAO 및 Patient 클래스와 같은 일부 데이터 액세스 개체에 맵핑하면 PatientDAO가 사용됩니다.
1 인 경우 비즈니스 로직 계층과 지속성 계층이 동일하지 않습니까? 2, 두 레이어를 별도의 프로젝트가 있다면 BL 프로젝트에 Patient 객체가 포함되어 있고 IPatientDAO와 PL에는 PatientDAO 객체가 있어야합니까?
아니면 완전히 잘못하고 있습니까? :-)
답변 해 주셔서 감사합니다. 엔티티에는 비즈니스 로직과 유효성 검사가 포함되어 있습니까? 그렇다면 Active Record (데이터베이스 테이블이나 뷰의 행을 래핑하고 데이터베이스 액세스를 캡슐화하고 해당 데이터에 도메인 논리를 추가하는 개체) 패턴을 사용하는 것 같습니다. Fowler는 PEAA에서 설명한 패턴입니다. 도메인 논리가 복잡하고 Folwer의 책을 읽은 후에 Data Mapper와 함께 도메인 모델 (동작 및 데이터를 모두 포함하는 도메인의 개체 모델)을 사용하는 데 더 관심이 있습니다. 어떻게 상속, 다형성 등을 사용하여 도메인 모델과 함께 NHibernate를 사용할 수 있습니까? – moonz
지속성 계층에있는 NHibernate 파일은 클래스 맵 파일과 일부 구성 파일보다 훨씬 짧습니다. 클래스 맵 파일은 비즈니스 계층에 맵핑되는 파일에 가능한 한 근접해야한다고 읽었습니다. – moonz
여러 주석에서이 작업을해야 할 수도 있습니다. 그러나 NHibernate는 본격적인 도메인 모델을 매우 쉽게 사용할 수 있도록 지원합니다. 사실, 참조하는 엔티티의 ID를 추적하기 위해 여러 속성을 추가하지 않고도 엔티티 참조를 설정하는 등의 작업을 수행 할 수 있으므로 더 깨끗한 솔루션 중 하나입니다. 또한 엔티티 클래스의 상속을 지원하며 (Fowler에서 언급 한 것처럼) 사용할 다형성 테이블 매핑 스타일을 지정할 수 있습니다.해당 엔티티에 적합한 논리를 엔티티에 입력하십시오. – ckramer