2008-09-18 11 views

답변

3

나는 당신의 물건의 디자인으로 귀결된다고 생각합니다. 객체 수준에서 지연로드가 적용될 수 있기 때문에 세션 관리에 대해 생각할 때 이점을 활용할 수 있습니다.

예를 들어, 데이터가 많고 게으른로드 된 개체가 있고 그리드/요약보기 및 세부보기가 있습니다. 그리드 요약보기에서는 객체의 게으른로드 버전을 사용하지 않습니다. 나는 대리 객체를 사용하여 그 데이터를 표시하고, 대리 객체는 게으르지 않습니다.

한편 사용자가보기/편집을 위해 해당 레코드를 선택하고 개체의 다중 페이지 세부 정보보기를 입력하면 특정 개체에 지연로드를 적용 할 때입니다. 필요시에만 세부 정보를 볼 수 있으므로 데이터가 게으르 게로드됩니다. 그렇게하면, 게으른 로딩을 위해 열려있는 내 세션의 범위는 세부 사항보기가 사용되는 동안에 만 지속됩니다.

2

앞서 말했듯이 HttpRequest의 경계는 사용할 수 없지만 데스크톱 응용 프로그램의 "HttpRequest"는 무엇인지 이해할 수 있습니다.

설명해 드리겠습니다. 일반적으로 HttpRequest는 액션을위한 컨트롤러가 될 것이므로 세션을 특정 액션으로 제한 할 것입니다. 이제 데스크톱 응용 프로그램에서 "컨트롤러"(이벤트)는 더 작을 수 있지만, @Jon이 말했듯이 창은 경계를 쉽게 나타낼 수 있습니다. 즉, 작업 한 내용을 세션에 그대로 두십시오.

0

어쩌면 우리는 명령 패턴 설정을 생각할 수 있습니다. 각각의 중요한 이벤트는 명령을 보내고 트리거하고 실행합니다. 기본 AbstractCommand.Execute() 구현은 세션을 초기화하고, 트랜잭션을 랩핑하고, 구체적인 SomeCommand._Execute() 구현을 호출하고 모든 것을 닫는 역할을 담당합니다.

어쨌든, 내 개체를로드하고 일반 인스턴스 (여기서는 게으른로드를 언급하고 있음) 만 처리해야 할 때와 같이 지속성에 대해 불가지론하는 것과는 거리가 멀다.

일종의 자동 열기/자동 닫기 동작을 구현할 수 있습니까? 이는 지연로드 트리거와 같은 암시적인 경우에도 상위 계층에서 쿼리에 대한 필요성에 대한 지속성 계층을 민감하게 만드는 방법으로 수행해야합니다. 커넥션을 닫는 것에 관해서는, DB 비활성의 주어진 타임 아웃 (10 초 후에)이 지속 레이어를 닫을 수 있습니다. 나는 이것이 예리하지 않다는 것을 안다. 하지만 실제로는 상위 계층의 지속성을 불가지론하게 만듭니다.

덕분에, 마르첼로