2009-04-13 5 views
3

코드에서 데이터베이스 테이블의 데이터를 객체로 가져 오는 것은 항상 평범한 코드처럼 보입니다. 데이터 매핑 코드 또는 리플렉션 코드?

  1. 이를 취할 클래스 필드 datafields 또는
  2. 사용 반사를 매핑 할 클래스와 컨트롤러를 데이터베이스 테이블을 읽고 생성하는 코드 생성기를 가지고

    : 나는 그것을 발견 한 방법은 두 가지가 있습니다 데이터베이스 필드를 찾아 클래스에서 찾으십시오. 위의 두 방법과주의

문제는 내가 모든 테이블에 대한 컨트롤러를 생성하기 때문에 내가 뭔가를 놓친 것 같은 일이 나에게 보인다

  • 방법 아래에 설명되어있다.
  • 무거운 데이터에 들어가면 방법 2가 너무 많은 노동력을 소비하는 것 같습니다. 액세스 코드.

데이터베이스에서 내 개체로 데이터를 가져와야하는 세 번째 경로가 있습니까?

+0

생각하고있는 플랫폼/프로그래밍 언어를 지정하는 것이 좋습니다. 대답은 플랫폼에 따라 다를 수 있습니다. – StaxMan

답변

1

이 답변은 사용하려는 언어에 사용할 수있는 기술에 달려 있다고 생각합니다.

나는 ORM (NHibernate)을 사용하여 매우 성공적으로 하나이므로 옵션 1을 권장 할 수 있습니다.

가 당신이 생각 걸릴 할 수있는 다른 옵션입니다 : 당신이 .NET을 사용하는 경우

  • , 당신은 하나의 클래스 내에서 매핑과 같은 역할을하는 클래스 속성에 대한 속성을 사용하도록 선택할 수도 있고, 반영 할 수있는 데이터로
  • 당신이 .NET을 사용한다면, Fluent NHibernate는 코드 내에서 타입 - 안전 매핑을 만드는 것을 아주 쉽게 만듭니다.
  • 제네릭을 사용할 수 있으므로 모든 테이블에 대해 컨트롤러를 만들 필요가 없습니다. 어쨌든 후자를 수행 할 가능성이 높습니다. 그러나 제네릭은 모든 테이블에 공통적 인 대부분의 일반 CRUD 메소드를 포함 할 수 있으며 특정 단점 만 코딩하면됩니다.
0

나는 데이터를 앞뒤로 맵핑하기 위해 리플렉션을 사용하며 무거운 데이터 액세스에서도 잘 작동합니다. "세 번째 경로"는 모든 것을 손으로하는 것입니다. 실행 속도는 더 빠르지 만 작성하는 속도는 느립니다.

3

그런 상황에서 일반적으로 OR (객체 - 관계형) 매퍼를 사용합니다. OR 기능을 제공하는 좋은 프레임 워크는 Hibernate입니다. 이 질문에 대한 대답이 있습니까?

0

나는 lewap에 동의한다. ORM (object-relational mapper)은 이러한 상황에서 정말로 도움이된다. 액티브 레코드 패턴을 고려할 수도 있습니다 (Fowler의 엔터프라이즈 아키텍처 패턴 책에서 논의 됨). 간단한 앱에서 DAL 생성 속도를 실제로 높일 수 있습니다.