2010-01-20 2 views
0

현재 프로젝트에 최근 DB 스키마 변경 사항이 있습니다. 이는 모든 열이 일관된 이름 지정 패턴을 따르고 all_in_snake_case인지 확인하는 것과 같이 대부분 스타일 정리였습니다.로딩시 JPA 열 매핑 확인

JPA, EclipseLink 또는 GlassFish가 일종의 "모두 확인"작업을 수행하여 각 엔티티 열이 있는지 확인하기 위해 DB 및 엔티티에서 모든 열 참조를 얻었습니다. 그리고 일치 ??

답변

0

내 두 센트 :

  • 쓰기 단위 테스트 당신의 엔티티의 각 맵핑과 DAO에서 쿼리를 테스트합니다. 그 가치가있는 미래를위한 자산입니다.
  • 매핑이나 주석 (eclipselink.ddl-generation으로 테이블 자동 생성)에서 데이터베이스 스키마를 생성 한 다음 은 데이터베이스 도구 (데이터베이스에 따라 달라질 수 있습니다)를 사용하여 두 데이터베이스 스키마을 비교합니다. 아마도 귀하의 DBA , 가지고 있다면 도움을 줄 수 있습니다.)
+0

. 나는 단위 테스트를 추가하는 것을 연기 해 왔지만 총알을 물고해야한다. – Freiheit

0

JPA 구현에만 해당됩니다. DataNucleus는 여러분의 스키마가 엔티티 정의와 일치하는지 확실히 확인할 수 있습니다. 다른 구현체도 이와 유사한 작업을 수행 할 수 있습니다.

0

Java 리플렉션을 사용하여 엔티티의 모든 매핑 된 속성을 가져 오는 JUnit 테스트를 작성하고 SQL을 사용하여 테이블의 모든 열을 비교하고 비교하여 모든 엔티티 또는 테이블에 대해 작업을 반복하십시오.

데이터베이스가 다음 쿼리를 사용할 때 당신이 당신의 테이블 열을 얻기 위해 오라클을 사용하는 경우, 예를 들어

: 네 말이 맞아

select column_name 
from user_tab_columns 
where table_name = 'YOUR_TABLE';