새 프로젝트를 만들고 봄 + 최대 절전 모드 관리에 대한 의문점이 있습니다. 우선 제가 많이 읽었으며 자신을 문서화하려했지만 몇 주 후에이 주제에 대해 조금 분실했습니다.최대 절전 모드 세션을 열고 닫는 데 사용할 패턴 (MyFaces 2.2.2 + Spring 4.0.3 + Hibernate 4.3.2)
프로젝트 구성 내 아키텍처는이 구조 다음
- :
JSF 콩 -> 외관 층 -> 서비스 레이어 -> DAO 레이어
내 최대 절전 모드는 모든 DAOS를 처리하고 Spring과 완전히 통합됩니다.
- 전체 데이터 소스 및 최대 절전 모드 구성은 스프링 구성 파일에서 수행되므로 스프링이 모든 것을 관리합니다.
- 저는 스프링 보안을 사용하여 프로젝트 보안을 처리합니다.
모든 것이 잘 통합되어있는 것처럼 보이지만 최대 절전 모드 세션을 관리하기위한 견고한 솔루션을 찾을 수 없습니다.
첫 번째 방법은 JSF PhaseListeners를 사용하여 OSIV를 사용하는 것이었지만 스프링을 통합하고 서비스 레이어에서 @Transactional 주석을 사용하기 시작했습니다.
여기 내 질문은 :
내가 매번 @Transactional 방법은 개방 된 하이버 네이트 세션을 호출하고 바로 닫혀 생각하십니까? 아니면 내가 틀렸어?
@Transactional에서는 렌더링 응답 단계에서 Hibernate의 게으른 인스턴스화가 발생하고 EAGER 페치를하고 싶지 않기 때문에 문제가 발생할 것이라고 확신합니다. 그래서 ...
OSIV를 사용해도 안전합니까? 또는 DOS 공격에 실제로 취약합니까?
OSIV 패턴보다는 지연 페치 (leazy fetching) 문제를 처리하는 더 좋은 방법이 있습니까? 나는 더 나은 패턴을 놓치고 있다고 확신한다. 주제에 약간의 빛을 던질 수 있는가? 당신은 단지에있는, 내 모든 질문 아키텍처에 대한 기본적 개념이기 때문에
나는 어떤 코드를 게시하지 못했지만, 당신이 내 코드의 나를 이해할 필요가있는 경우 (나는 나 자신을 설명 엉망입니다 알고) 나에게 부탁하면 최대한 빨리 게시하겠습니다.
감사합니다.
감사 인사, 트랜잭션 전파를 살펴 보겠습니다. 최대 절전 세션과 거래에 대해 머리가 엉망이되어 올바르게 일을 잘 수행하는 방법을 찾아야합니다. 또한 [OpenSessionInViewFilter] (http://docs.spring.io/spring/docs/4.0.3.RELEASE/javadoc-api/org/springframework/orm/hibernate4/support/OpenSessionInViewFilter.html)를 발견 했으므로 한 가지 질문을 삭제했습니다. – xmartinez
어쨌든 OSIV에 대해 더 많이 읽으면 그만큼 좋아한다는 말을해야합니다. 그것은 많은 단점을 가지고있는 것 같아요, 그리고 그것은 단지 최대 절전 모드의 게으른 로딩 문제를 해결합니다. 나는 DTO의 접근법을 좋아하지 않는다. 누군가가 이것을 관리하는 방법에 대해 더 많은 아이디어를 가지고 있을지도 모른다. – xmartinez