출처: 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의 기본타입(BasicTypes)을 통해 일치시켜 준다면 그것이 곧 암묵적인 옵셔널한 @Basic을 사용한다는 의미임.
만약 자바의 어떠한 필드변수가 복합타입의 변수라면 그것을 Hybernate가 가진 기본타입으로 일치시켜 줄수 없으니 다른 어떠한 어노테이션이 들어가야 합니다. 주로 @Embedded라는 어노테이션이 들어갑니다.
'Spring&IntelliJ' 카테고리의 다른 글
* What went wrong:org/gradle/api/plugins/MavenPlugin (0) | 2024.01.10 |
---|---|
JPA. 필드(field)에 적용되는 몇가지 중요 어노테이션(2)@Temporal @Lob, @Enumerated, @transient (1) | 2024.01.04 |
JPA. Table를 이용한 기본키 생성전략 (2) | 2024.01.04 |
JPA. Sequence를 이용한 기본키 생성전략 (1) | 2024.01.04 |
JPA 영속객체의 라이프사이클 (0) | 2024.01.02 |