본문 바로가기

개발

하이버네이트 메타데이터 어노테이션을 왜 사용해야 하는지.

- 메타데이터의 필요성
하이버네이트는 클래스와 테이블, 프로퍼티와 열, 연관관계와 외래키, 자바타입과 SQL 타입간의 매핑을 기술할 메타데이터를 필요로 한다. 

이 정보를 객체/관계형 매핑 메타데이터라 한다. 객체지향과 SQL시스템간의 서로 다른 타입 시스템 및 관계 표현에 대한 변환을 정의하고 관장한다. 

이 메타데이터를 다루는 방법은 2가지가 있는데 
1. XML로 다루는 방법
2. 어노테이션으로 다루는 방법이 있다. 

- 왜 어노테이션 기반을 써야하는지
각자 장단점이 있겟지만 어노테이션 기반으로 다루는 방법을 설명한다.

어노테이션 기반은 메타데이터를 물리적으로 별도 파일로 분리하지 않고 그것이 기술하는 정보 옆에 두는것이다. EJB3.0과 자바 퍼시스턴스 표준을 기반으로 하는 하이버네이트 애노테이션을 hibernate in action에서 최선이라 표현하고 있다. JDK5.0이상 지원 된다. 

- 어노테이션 기반의 장점.
타입 안정성을 보장하며, 하이버네이트 구동 시에 자바 리플렉션으로 선언한 어노테이션을 읽는다. xml 매핑 파일을 작성할 필요도 없고 하이버네이트가 xml도 파싱 할 필요가 없기 때문에 구동이 더 빨라진다. 또 어노데이션이 자바 타입이기 때문에 ide가 애노테이션 검증과 문법 강조를 제공해줄 수 있다. 

애자일 개발에 적합한 유연함. 리펙토링한다면 클래스와 프로퍼티의 이름을 변경하고, 삭제하며, 이곳저곳 옮겨다니는데 대부분의 개발 도구와 편집기는 xml요소와 속성 값까지 리펙토링 못하지만 어노테이션은 자바 언어의 일부라고 생각되서 리펙토링 대상에 포함된다.