문제

내가 이것을 알고는 주관적 질문,하지만 왜 최대 절전 모드는 것 같 설계에 대한 짧은 살았다.일반적으로 내 응용 프로그램에서 내가 만들 DAOs 를 추상적 데이터층하지만,때문에 나는 예측할 수 없는 방법 entity 체가 사용되는 몇 가지의 컬렉션으로드,또는 내가 무슨 말을 로드하지 못하면 세션이 닫힙니다.

왜 그들은 알지 못하는 디자인도록 하는 것이 자동으로 다시 열린 세션이나 세션은 항상 열?

도움이 되었습니까?

해결책

기 때문에 한 번 이동할 밖으로 트랜잭션의 경계를 맞출 수 없는 데이터베이스하지 않고 다시 시작하는 새로운 트랜잭션이 있습니다.는 오래 실행되는 거래의 경우에'나쁜 일(tm).

나는 당신이 원하는 게으른 짐체에서 보기-살펴보 에 대한 몇 가지 옵션이 있습니다.내가 선호하는 방법을 정확하게 정의의 많은 개체는 지도 될 것입니 반환에 의해 세션 외관 방법이 있습니다.이것은 쉽게 단위 테스트하고 성능 테스트 나의 사업 계층입니다.

다른 팁

EJB와 Hibernate를 사용한 데스크탑 앱에서 작업했습니다. 우리는 설정해야했습니다 lazy=false 물체가 직렬화되면 백엔드에서 가져 오는 능력을 잃어 버리기 때문에 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에서나 어디에나 있습니다. 불행히도 그것이 어떻게 진행되는지입니다.

성능에 관심이 있다면 백엔드에서 캐싱을 사용하여 게으른 페치가 고통스럽지 않도록 할 수 있습니다.

OpenSessionInview 패턴을 찾고 있는데,이 패턴은 본질적으로 세션을 투명하게 재개해야 할 때를 감지하는 개념적 필터 (때로는 서블릿 필터로 구현)를 찾고 있습니다. 여러 프레임 워크가이를 구현하여 자동으로 처리합니다.

데스크탑 응용 프로그램을 작성하고 있으므로 필터를 사용하는 것이 적용되지 않습니다.

연결은 사용하는 즉시 재활용 해야하는 부족한 자원입니다. 또한 연결 풀링을 사용하는 경우 필요할 때 다른 것을 얻는 것이 빠릅니다. 이것은 웹 사이트 규모를 만들기 위해 사용해야하는 아키텍처입니다. 데스크탑 앱이지만 사용 사례는 확장 가능한 사이트에 집중할 수 있습니다.

Ms Ado.net을 보면 짧은 시간 동안 연결을 열어 두는 데 비슷한 초점이 표시됩니다. 데이터를 연결 해제 한 다음 준비가되면 데이터베이스에 적용 할 수있는 전체 오프라인 모델이 있습니다.

Hibernate는 객체를 관계형 데이터베이스 테이블에 매핑하는 방법으로 설계되었습니다. 그것은 그 일을 아주 잘 성취합니다. 그러나 항상 모든 사람을 기쁘게 할 수는 없습니다. 초기화가 어떻게 작동하는지 배우는 데 약간의 복잡성이 있다고 생각하지만 일단 당신이 일단 걸어 다니면 의미가 있습니다. 나는 그것이 당신을 화나게하기 위해 특별히 "설계된"지 모르겠다. 그것은 그것이 일어난 방식 일뿐입니다.

비 바프에서 세션을 마술처럼 재개 할 예정이라면 프레임 워크 학습의 복잡성은 혜택을 훨씬 넓을 것이라고 생각합니다.

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