본문 바로가기

Spring&IntelliJ

JPA. 필드(field)에 적용되는 몇가지 중요 어노테이션

출처: https://www.youtube.com/watch?v=C7Uu_hFnQN8&list=PLOSNUO27qFbvzGd3yWbHISxHctPRKkctO&index=12   (11:00 부터)

@Column어노테이션 말고 @Basic이라는 옵셔널(Optional)한 어노테이션이 있습니다.옵셔널하다는 것은 생략가능하다는 의미입니다. 만약 @Column어노테이션이 없다면 해당 필드(변수)는 @Basic어노테이션을 갖는다고 보시면 됩니다. 기본적으로 자바객체의 타입과 DB가 가지고 있는 Column의 타입은 아시다시피 다릅니다. 이 다른것을 매핑해줄수 있는 매커니즘을 JPA provider(Hibernate, JPA구현체를 말함)들은 가지고 있습니다. 매핑 메커니즘의 기본이 되는 것을 Basic이라고 하여 @Basic어노테이션을 가지고 지정해 줄수 있습니다. 지정할 수 있는 것들은 1. 패치, 2. 널인지 아닌지를 체크해 줄 수 있는 두 가지 옵션을 가지고 있습니다.

이러한 어노테이션(@Basic)이 있다는 것을 알고 계시면 됩니다.

자바의 타입과 DB의 타입을 매핑하기 위해 Hybernate자체적으로 기본(Basic)타입을 정의해 놓은 표

 

만약 자바와 DB의 데이터타입의 불일치를 위의 Hybernate의 기본타입(BasicTypes)을 통해 일치시켜 준다면 그것이 곧 암묵적인 옵셔널한 @Basic을 사용한다는 의미임.

만약 자바의 어떠한 필드변수가 복합타입의 변수라면 그것을 Hybernate가 가진 기본타입으로 일치시켜 줄수 없으니 다른 어떠한 어노테이션이 들어가야 합니다. 주로 @Embedded라는 어노테이션이 들어갑니다.