2012-02-22 7 views
0

Venue을 포함하는 Event 모델 개체가 있다고 가정합니다. 장소를 채우기 위해 데이터베이스를 쿼리 할 때 Venue을 게으른로드에 사용할 수있는 venueid 만 저장하려고합니다.지연로드 모델

Event findEventByName(String name)과 같은 기능을 가진 데이터 액세스 클래스 Events (복수형)이 있습니다. 다른 모델 객체와 유사합니다. 내 Event 수업 시간에, 내가 좋아하는 getVenue있는 경우 :

public Venue getVenue() { 
    if (this.venue == null) 
     this.venue = Venues.findVenueById(this.venueid); 
    return this.venue; 
} 

을이 작동하지만 내 데이터 액세스와 몇 내 모델을 것이다. 내 디자인이 정말로 "정확하다"고 생각하지 않습니까? 어떻게 변경합니까? 이 학술 프로젝트에서는 Hibernate와 같은 타사 라이브러리를 사용하여 구현 방법에 대한 느낌을 갖지 않을 것이라고 생각합니다.

+1

실제로 그렇게 나쁘지는 않습니다. 나는 얼마나 많은 다른 데이터 액세스 방법을 가지고 있는지에 대한 의문이 생깁니다. 당신이 많은 것을 가지고 있다면 아마도 인터페이스를 통해 그것을하고 싶을 것입니다. 그렇지 않으면 괜찮아 보입니다. –

답변

1

나는 당신이 데이터 액세스에 당신의 객체 모델을 결합시키는 것이 가장 좋다고 생각한다.

관계형 맵퍼에 대한 최신 객체는 상당히 발전되었습니다. 예를 들어, EclipseLink는 클래스 파일의 바이트 코드를 동적으로 수정하여 지연로드와 같은 기능을 제공 할 수 있습니다. 그들은 그것을 weaving이라고 부릅니다.

+0

아, 아마도 그대로 두어도되고, 모델을 채울 때 DataAccess 개체도 주입 할 수 있습니다. –