견습 기간 동안 저는 주로 제가 직접 코딩하고 디자인 한 소규모 프로젝트에 NHibernate 를 사용했습니다 . 이제 더 큰 프로젝트를 시작하기 전에 데이터 액세스를 설계하는 방법과 ORM 레이어 사용 여부에 대해 논의했습니다. 나는 여전히 견습생이고 여전히 엔터프라이즈 프로그래밍의 초보자라고 생각하기 때문에 데이터베이스에 대한 객체 관계형 매퍼를 사용하면 개발을 상당히 쉽게 할 수 있다는 내 의견으로는 실제로 추진하려고하지 않았습니다. 개발팀의 다른 코더들은 저보다 훨씬 더 경험이 많기 때문에 그들이 말하는 대로만 할 것 같습니다. :-)
그러나 NHibernate 또는 유사한 프로젝트를 사용하지 않는 두 가지 주요 이유를 완전히 이해하지 못합니다.
- SQL 쿼리를 사용하여 자신의 데이터 액세스 개체를 만들고 Microsoft SQL Server Management Studio에서 이러한 쿼리를 복사 할 수 있습니다.
- ORM 디버깅은 어려울 수 있습니다.
따라서 물론 많은 SELECT
s 등으로 데이터 액세스 계층을 구축 할 수 있지만 여기서는 자동 조인, 지연로드 프록시 클래스 및 테이블이 새 열을 얻거나 열이 발생하는 경우 유지 관리 노력이 줄어드는 이점을 놓칩니다. 이름이 변경되었습니다. (다수의 업데이트 SELECT
, INSERT
및 UPDATE
매핑 설정을 업데이트 할 가능성이 비즈니스 클래스와 DTO들 리팩토링 대 쿼리.)
또한 NHibernate를 사용하면 프레임 워크를 잘 모르면 예기치 않은 문제가 발생할 수 있습니다. 예를 들어 자동으로 유효성을 검사 할 문자열의 길이를 설정 한 Table.hbm.xml을 신뢰하는 것이 될 수 있습니다. 그러나 "간단한"SqlConnection 쿼리 기반 데이터 액세스 계층에서 유사한 버그를 상상할 수도 있습니다.
마지막으로, 위에서 언급 한 주장이 중요한 데이터베이스 기반 엔터프라이즈 애플리케이션에 ORM을 사용하지 않는 좋은 이유입니까? 그들이 놓친 다른 주장이 있습니까?
(나는 이것이 팀워크가 필요한 최초의 "대형".NET / C # 기반 애플리케이션이라고 생각한다고 덧붙여 야 할 것입니다. 단위 테스트 또는 지속적인 통합과 같이 Stack Overflow에서 매우 평범한 것으로 보이는 모범 사례는 그렇지 않습니다. -지금까지 여기에 존재합니다.)