모델 클래스를 생성하는 것이 더 낫습니까, 아니면 일반 데이터베이스 유틸리티 클래스를 사용하는 것이 더 낫습니까?

StackOverflow https://stackoverflow.com/questions/2778

문제

우리는 데이터베이스 호출을 위한 간단한 유틸리티 클래스(ADO.NET에 대한 간단한 래퍼)를 사내에 가지고 있지만 각 데이터베이스/객체에 대한 클래스를 만들려고 생각하고 있습니다.그렇게 하는 것이 현명한 일일까요, 아니면 ASP.NET용 전체 MVC 프레임워크를 사용하는 경우에만 이점이 있을까요?

그래서 우리는 이것을 가지고 있습니다:

SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters);
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters);
SQLWrapper.Execute(connstr-alias, sql-statement, parameters);

이것을 할 생각 :

Person p = Person.get(id);
p.fname = "jon";
p.lname = "smith";
p.Save();

또는 새로운 기록을 위해 -

Person p = new Person();
p.fname = "Jon";
p.lname = "Smith";
p.Save();
p.Delete();

이것이 현명한 것인가, 아니면 과잉인가?재사용, 데이터베이스 변경, 유지 관리/가독성 측면에서 이점을 볼 수 있습니다.

도움이 되었습니까?

해결책

이 질문은 데이터 기반 디자인과 도메인 기반 디자인으로 로드됩니다.동작이 많은 응용 프로그램의 경우 도메인 기반 디자인이 선호됩니다.보고 또는 유틸리티 애플리케이션은 데이터 기반 설계에서 더 잘 작동하거나 개발 속도가 더 빠른 경향이 있습니다.

당신이 묻는 것은 "우리 회사가 코드 디자인 방식을 근본적으로 바꿔야 하는가"입니다.도메인 괴물로서 내 직감적 반응은 비명을 지르는 것 .그러나 귀하의 질문이 단순하기 때문에 귀하가 제안하는 변경 사항의 범위를 완전히 이해하고 있는지 확신할 수 없습니다.내 생각에는 당신이 그것에 대해 당신의 팀과 더 많이 이야기해야 한다고 생각합니다.

다음과 같은 문헌을 얻으십시오. 에반의 DDD 책, 또는 무료 기초 전자책, 그러면 어느 방향으로 가야 할지 판단하기 더 좋은 위치에 있게 됩니다.

다른 팁

결코 MVC가 웹의 유일한 디자인 패턴은 아니지만 유용합니다.

제 생각에는 'V'나 'C'를 채택할 수 없거나 채택하지 않더라도 'M'만 채택하면 배당금을 지불할 것입니다.

당신이 논의하는 접근 방식은 나를 포함한 많은 사람들에게 좋은 접근 방식으로 간주됩니다!이 접근 방식을 배우려면 약간의 노력이 필요하지만 그렇다고 해서 좌절하지 마십시오!

그냥 한번 시도해 보는 것은 어떨까요? LINQ to SQL을 사용한 소규모 프로젝트?아마도 좋은 참고 프로젝트 ~에 구글 코드, 다른 사람들이 어떻게 작업했는지 연구하십시오.

이는 간단한 도구이며 개체를 데이터베이스에 매핑할 때 발생하는 몇 가지 문제에 익숙해질 수 있도록 해줍니다.

그러면 당신은 할 수 있을 것입니다 그것을 느껴보세요, 학습 곡선의 가치가 있는지 결정합니다.

이해해야 할 새로운 개념이 있을 것입니다. 다음과 같은 것을 실험해 보세요.

  • 작업 단위:저장 및 삭제 등을 실행할 때 ORM은 이 작업을 즉시 수행하지 않는 경향이 있지만 레코드 세트 기반 DAL은 수행합니다.이는 놀랄 수 있으므로 이에 대해 조금 배워야 합니다.다음 내용을 읽어보세요. 작업 단위 패턴 이에 대한 이해를 얻으려고.
  • 대량 작업 OR/M에 문제가 있습니다.데이터 리더는 수천 개의 행을 효율적으로 반복할 수 있지만 ORM을 사용하면 대규모 개체 배치로 작업할 때 주의해야 합니다.다시 한 번 읽어볼 내용입니다.
  • 협회 다음과 같은 일을 할 수 있을 때 좋을 것 같아요 customer.Orders.Count 그러나 그것은 또한 많은 문제의 원인이기도 합니다.협회와 협력할 때 따라야 할 몇 가지 안전한 관행을 찾아야 합니다.

...몇 가지 예를 들자면.

우선, 상속이나 기타 사항에 대해 걱정하지 마세요. 간단하게 시작하고 테이블에 매핑되는 간단한 엔터티를 만드세요.

기존 DAL을 사용하는 것과 같은 방식으로 사용해 보세요.그런 다음 연관 실험을 시작하십시오.

그런 다음 엔터티에 더 많은 동작을 추가해 보세요.이 기능이 마음에 들고 더 많은 기능이 필요하다고 생각되면 다음과 같이 기능이 풍부한 ORM을 사용해 보는 것을 고려해 보세요. 빛의 속도 또는 NH절전 모드.

도움이 되었기를 바랍니다!

내가 보기에 당신은 LINQ가 이미 할 수 있는 일을 하려고 하는 것 같습니다.사용할 수 없는 오래된 프레임워크에 갇혀 있다면 Subconic(http://subsonicproject.com/) 이러한 모든 모델 객체를 수동으로 생성할 필요가 없습니다.

비슷한 곤경에 처한 프로젝트에서 중간에 아음속으로 변경하여 환상적인 결과를 얻었습니다.개발 속도가 빨라지고 코드 읽기/사용이 훨씬 쉬워집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top