2012-06-15 3 views
0

최대 절전 모드를 사용하여 주석을 통해 일부 ginormous 테이블을 포함하는 레거시 스키마에 개체를 매핑하고 있습니다 (XML 파일은 2003 년이므로). 이 클래스들은 너무 크기 때문에, 때로는 오타가 발생하기 때문에 Hibernate는 그것을 실행하려고 시도 할 때까지 내게 알려주지 않습니다.최대 절전 모드 매핑 테스트

는 여기에 내가 무엇을 시도했다입니다 :

하나 :

이 클래스의 문자열 값이 varchar(255)에 대해 검증됩니다 : "확인"할 hbm2ddl.auto 설정. 데이터베이스에있는 많은 열 유형이 CHAR(n)이기 때문에 이것은 폭발적입니다. 나는 columnDefinition="CHAR(n)"을 수백 개의 매핑에 추가해야 할 것입니다.

2 : 단위체 사용.

Maven을 통해 이들을 가져 오면 다른 코드 섹션을 날려 버리는 의존성 라이브러리 가져 오기가 발생합니다. 예 : 나는 Hibernate 4.1을 사용하고 있지만, Unitils는 Hibernate 3.2.5를 가져와 UserType을 불렀다.

이렇게하려면 다른 방법이 있습니까? 필자는 Unitils 코드를보고 필요한 섹션을 간단히 잡아낼 수 있는지 살펴 보았습니다 (단일 메서드가 필요할 때 아파치 - 커먼을 자주 사용함). 그러나 간단한 작업은 아닙니다.

Hibernate는 Spring 애플리케이션 컨텍스트를 통해 설정된다.

어떤 아이디어가 있습니까?

답변

1

스프링 테스트 프레임 워크를 사용하여 메모리 데이터베이스 (HSQLDB, H2)에 대한 테스트를 작성했습니다. 테이블에 대해 쿼리를 실행하려고하면 매핑 오류가 빨리 표시됩니다.

테스트 클래스는 다음과 같이 보일 것입니다 :

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes=MyTestConfig.class) 
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=true) 
public class MyTest { 

    @Autowired 
    private SessionFactory sessionFactory; 

    // class body... 
} 

내가 테스트의 일환으로 테이블을 자동으로 배포하는 최대 절전 모드를 구성합니다.

+0

좋은 답변이지만, 내가 찾던 내용이 아닙니다. 내가 원하는 것은 쿼리를 작성하지 않고 즉시 모든 매핑을 테스트하는 방법입니다. 내가 원한 것처럼 보이는 것이 그렇게 쉽지는 않다. – Jason

+0

내 마음에 매핑을 테스트하는 유일한 방법은 쿼리를 실행하는 것입니다. 클래스에 대한 주석을 확인하는 유틸리티를 작성하지 않으면 ... 매우 간단하지 않습니다. –