2013-03-15 3 views
1

그냥 궁금 JBoss Server의 @Stateless 세션 빈에서 동시에 액세스 할 수 있습니다. 사실 Dozer가 정적 변수 또는 인스턴스 변수를 라이브러리에서 사용하여 정적 매퍼를 사용할 수 있는지 또는 매 호출마다 새 인스턴스를 만들 수 있는지를 결정하는 것은 실제로 알지 못합니다.정적 사용

답변

2

도저 인스턴스가 정적 일 수 있습니다. 각 요청에 대해 새 인스턴스를 만들면 많은 양의 캐시가 매번 초기화 될 것이므로 성능이 훨씬 더 나빠질 것입니다. ConcurrencyErrors가 사용자 지정 변환기의 버그 또는 내부 도저 문제로 인해 발생할 수 있습니다.

+0

저는 현재 사용자 정의 변환기를 사용하지 않습니다. 결과적으로 저는 안전해야합니다. 정적 인스턴스에 대한 코드를 변경하겠습니다. – Wis

0

documentation에서 DozerMapper 인스턴스는 싱글 톤으로 만들어야합니다. DozerBeanMapper는 스레드로부터 안전하므로 다중 스레드로 위험을 무릅 쓰고 사용할 수 있습니다.

DozerBeanMapperSingletonWrapper.getInstance();도 사용할 수 있습니다. 그러면 싱글 톤 부분이 처리됩니다.

필자는 공용 정적 필드로 매퍼를 사용하는 것이 좋습니다.

Selma을 사용하여 사용자 매핑을 처리 할 수도 있습니다. 이것은 컴파일 타임에 매핑 코드를 생성하는 Annotation 프로세서를 기반으로 한 새로운 라이브러리입니다. 그것으로 youre 코드는 다음과 같이 보일 것입니다.

// Configure the mapping 
@Mapper 
public interface DtoMapper { 

    MyDTO toDTO(MyEntity e); 
} 

// Retrieve the mapper 
public static DtoMapper mapper = Selma.getMapper(DtoMapper.class); 

// and some where in the code use 
mapper.toDto(entity);