이것은 좋은 질문이며 IMHO는 맞춤 DAL과 마찬가지로 확장 할 수 있습니다. 필자는 nHibernate만을 사용 했으므로 시스템과 시스템을 확장하는 데 도움이되는 기능에만 집중할 것입니다.
- 지연로드 - 지연로드를 지원하므로 불필요한 항목을로드하지 않아도됩니다. 물론 Select n + 1 문제를주의해야하지만 시스템에 문제가 발생하지 않도록해야합니다.
- Eager Fetching - SQL에 대한 추가 트립을 피할 수있게하는 데 필요한 객체를 열심히 가져 오는 다양한 방법이 있습니다.
- 2 차 레벨 캐시 - nHibernate는 DB 로의 이동을 줄임으로써 확장 성을 높이는 데 사용할 수있는 2 차 레벨 캐시를 지원합니다. 다양한 유연성을 제공하는 여러 가지 배킹 제공 업체가 있습니다.
- SQL 작성 - nHibernate에서 저장 프로 시저를 호출하거나 엔티티를 반환 할 인라인 SQL 쿼리를 제공 할 수 있습니다. 이렇게하면 생성 된 sql이이를 자르지 않을 때 자신의 SQL을 사용할 수 있습니다. 예를 들어 재귀 쿼리를 사용하여 자체 조인 트리를 로딩하는 경우.
이제는 사용자 지정 DAL 레이어를 처음 조정하는 것이 더 쉽다고 생각합니다. 사용자가 자신의 구성에 익숙하고 미세 조정할 수 있기 때문입니다. 그러나 좋은 ORM은 많은 부분을 최적화시켜줍니다. 당신은 단지 그것을 배우는 약간의 시간을 보낼 필요가 있습니다.
성능이 중요한 코드 영역이 있고 응용 프로그램의 작은 영역에 대해 ORM을 사용할 수 없다면 사용자 지정 DAL 계층을 직접 구축 할 수 있습니다. 팩토리에서 만든 리포지토리와 같은 적절한 디자인 패턴을 사용하는 경우 저장소의 구현을 스왑 아웃하면됩니다.
지속성/ORM을 스케일링한다는 것은 무엇을 의미합니까? –
하하,이 질문은 바위 –
우리의 웹 응용 프로그램에서 병목 현상은 데이터베이스입니다 결과적으로 우리의 비즈니스 로직은 데이터베이스에 가장 적합한 것을 중심으로 구축되었습니다. 지속성에 대한 무지는 DB를 희생하여보다 유연한 비즈니스 계층을 제공합니다. 규모를 조정할 때 지속성을 무시할 수 있습니까? – danswain