필자는 모델 클래스와 실질적으로 동등한 데이터베이스를 가지고있어 시간을 낭비하는 것처럼 보입니다. 나는 SQLAlchemy의 코어 (안 ORM)를 사용하고, 나는 게이트웨이의 예처럼 보일 클래스 생성 : 상태에 잡고 사용하여 저장하려면 "금지"또는 "포럼"클래스를 만들기특정 db 테이블을 나타 내기 위해 항상 모델이 필요합니까?
class BanGate(Gateway):
def __init__(self):
super(BanGate, self).__init__('ban')
def ban_user(self, user, group, exp):
data = dict(user_id=user, group_id=group, expires=exp)
self._table.insert(values=data).execute()
def unban_user(self, user, group):
cond = and_(self._table.c.user_id == user, self._table.c.group_id == group)
self._table.delete(whereclause=cond).execute()
class ForumGate(Gateway):
def __init__(self):
super(ForumGate, self).__init__('forum')
def create_forum(self, group, user, title, desc):
data = dict(group_id=group, creator=user, name=title, description=desc)
self._table.insert(values=data).execute()
def delete_forum(self, forum):
stmt = (self._table.c.forum_id == forum)
self._table.delete(whereclause=stmt).execute()
을 이 게이트웨이는 시간 낭비처럼 보입니다. 컨트롤러의 경우 요청 객체의 데이터를 가져 와서이 게이트웨이 객체를 직접 사용하는 방법에 대해 생각하고 있습니다. 페이지에 대한 대부분의 데이터는 조작되거나 저장되거나 읽혀질 필요가 없으므로 모델 클래스의 사용은 필요하지 않은 것처럼 보입니다.
또한 게이트웨이 내부에서 사용되는 테이블 클래스는 자동로드 기능을 사용하므로 데이터베이스 스키마를 정의하지 않았습니다.
그래서 기본적으로 데이터를 지속하려면 어떻게해야합니까? 이러한 게이트웨이 개체로 전달되는 모델 클래스를 만들어야합니까? 아니면 단순히 게이트웨이 개체 데이터를 요청 개체에서 직접 전달해야합니까?
(또한, "gatway"나는 http://martinfowler.com/eaaCatalog/tableDataGateway.html 참조 시까 지)이 경우에 잘
아니요. 실제로 모델은 하나의 인스턴스이고 레이어가 아닙니다. 컨트롤러, 뷰 및 다른 것들을 포함하는 MVC 디자인 패턴의 다른 주요 레이어 (프리젠 테이션 레이어)처럼. 당신이 "모델"이라고 부르는 것은 실제로 [도메인 객체] (http://c2.com/cgi/wiki?DomainObject)입니다. 그리고 그것들은 단일 DB 구조에 묶여서는 안됩니다. 지옥, 그들은 DB가 나가는 것을조차 인식하지 않아야합니다. –