2012-05-14 4 views
6

웹 프로젝트를 개발 중이며 많은 연구 끝에 JSF + Primefaces, Spring 및 Hibernate 방식을 사용하기로 결정했습니다. 내 프로젝트의 아키텍처를 설계하는 동안 나는 다음과 같은 접근 방식 확정했다 : - JSF + PrimeFaces 페이지 ---> 콩 백업> -> 서비스 콩 -> 다오이 -JSF-SPRING-HIBERNATE 아키텍처 - Backing Bean 관련 모범 사례

배우를> 최대 절전 모드

  • Service Bean과 DAO는 종속성 삽입이있는 스프링 빈입니다.

내 관심은 이제 백업 콩에 대한 지금 : 은 내가 렌더링해야하는 페이지의 유형에 따라 UI 페이지에 대한 다수의지지 콩을 사용할 계획입니다.

예 : 새로운 사용자 등록 페이지의 경우 UserBackingBean을 사용하는 UserProfile.xhtml이 있습니다. UserBackingBean은 Spring에 의해 UserServiceBean이 삽입되어있다. UserServiceBean은 Spring에 의해 UserDao가 삽입되어있다.

UserBackingBean에서 사용자가 UserProfile.xhtml에서 양식 데이터를 입력하면 User.java 도메인 (ORM) 개체를 채워야합니다.

a) 가장 좋은 방법은 무엇입니까? UserBackingBean의 생성자에서 User.java를 초기화해야합니까? 이것이 올바른 접근 방법입니까? 다른 출구가 있다면 제안 해주세요.

b) 내 프로젝트를 위해 결정한 위의 아키텍처에도 제안 해주십시오. 적절한 접근 방법입니까?

답변

2

내가 따르는 일반적인 규칙은 트랜잭션 경계가 서비스 빈에 표시되어 있으므로 트랜잭션이 이미 실행 중인지 알지 못하기 때문에 서비스 외부에서 최대 절전 모드 POJO를 수정하고 싶지 않습니다. 그래서 backing bean으로부터 서비스 레이어가 최대 절전 모드 pojo를 구축하고 그것을 저장하고, 업데이트하고, ... 등등 업데이트하는 데 필요한 매개 변수를 전달할 것입니다.

이렇게하는 또 다른 방법은 다음과 같습니다. backing bean은 서비스 계층에 의해 정의 된 인터페이스를 구현 한 다음 backing bean을 서비스 계층에 전달합니다. 예를 들어.

public interface UserInfoRequest { 
    public String getName(); 
} 


@Service 
public class SomeSpringService { 

    @Transactional(.....) 
    public void registerNewUser(UserInfoRequest request) 
    { 

    } 

} 

public class SomeBackingBean implements UserInfoRequest { 

    private SomeService someSpringService; 

    public void someMethodBoundToSJF() 
    { 
     this.someSpringService.registerNewUser(this); 
    } 
} 

내가 JSF의 팬이 아니다 당신의 마지막 질문에 대해서는, 나는 그것이 서버 구성 요소 기반 프레임 워크이기 때문에 JSF가 근본적으로 결함 생각합니다. JSF에 대한 나의 주장은 서버 측 컴포넌트 기반 프레임 워크에 대한 일반적인 논쟁이다.

서버 측 구성 요소 기반 프레임 워크의 주된 결함은 구성 요소의 모양이 달라 붙어서 구성 요소가 출력되는 것을 제어하지 않는다는 것입니다. 사용자가 직접 작성해야하는 모양이 다른 경우 구성 요소를 수정하거나 기존 구성 요소를 수정해야합니다. 웹 브라우저는 현재 매우 빠르게 응용 프로그램 UI의 품질을 향상시킬 수있는 새로운 기능을 추가하고 있지만 HTML, CSS 및 JavaScript를 직접 작성해야하는 기능과 서버 측 구성 요소로 인해 더욱 어려워졌습니다.

클라이언트 측 구성 요소 아키텍처는 서버 측 구성 요소보다 훨씬 뛰어납니다. 다음은 권장 스택입니다.

클라이언트 측 아키텍처 :

  • JQuery와.JS - 기본 libary 모든 브라우저가 자바 스크립트에 동일하게 보이게하는
  • backbone.js + underscore.js - 높은 수준의 클라이언트 측 컴포넌트 기반 아키텍처
  • handlebars.js - 클라이언트 측 템플릿
  • 트위터 부트 스트랩 -에 괜찮은 선발은 CSS의 & 위젯

당신은 HTML, CSS 코드를 작성하고 자바 스크립트가 AJAX를 사용하여 서버 측 모델 이야기 백본 전망으로 조직을 설정하세요. 충분한 재사용 가능한 코드를 만들려면 충분한 구조로 클라이언트 측 사용자 환경을 완벽하게 제어해야합니다.

서버 사이드 아키텍처 :

  • 주석 기반 스프링 MVC, 서비스 및 다오 (@Controller, @Service, @Repository) 유형별를 autowiring과
  • 봄 구성 요소 검사 (@Autowired, @Inject)
  • AspectJ를 뷰 기술로 시간 제직 또는 컴파일 시간 제직
  • 최대 절전 모드를
  • 톰캣 7
  • JSP로드 스프링 MVC에 대한 nology (네, cluncuky하지만 실 거예요 대부분을 위해, 너무 많은 JSP 페이지를 만들 수 usng <퍼센트 @inculde> 지시어

공구 : - 봄 도구 스위트 - JRebel (그래서 당신은 돈한다는 ' t는 서버를 시작하고 중지해야합니다.) 실제로 돈 가치가있는 것입니다. - Tomcat 7