사용자 정의 타입을 정의해서 데이터베이스에 사용해보기 위해 Hibernate의 @Type @TypeDef을 사용하려고 했습니다. 제가 참고했던 자료는 Hibernate버전이었고 제 테스트 환경은 hibernate 버전이기 때문에 해당 애노테이션이 deprecate되었기에 새로운 버전에 맞춰 수정해야했습니다. 이 과정을 정리하였습니다.
사용자 정의 타입을 특정 엔티티 필드에 적용하는 데 사용된다. 이 어노테이션을 통해 Hibernate가 기본적으로 제공하지 않는 자료형을 사용할 수 있다.
사용자 정의 타입을 정의하고, 해당 타입을 사용할 수 있도록 선언하는 데 사용된다. 이를 통해 다른 엔티티 필드에서도 동일한 사용자 정의 타입을 재사용할 수 있다.
기준 환경
- springBoot : 2.6.7
- Java : 11
// alarm entity
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
public class Alram {
@Type(type = "jsonb")
@Column(columnDefinition = "json")
private AlarmArgs args;
}
기준환경
- Hibernate : 6.5.2
- Java: 11
@Convert(attributeName = "jsonb", converter = JsonBinaryType.class)
@Table(name = "alarm")
public class Alarm extends EntityDate {
@JdbcTypeCode(SqlTypes.JSON)
@Column(columnDefinition = "json")
private AlarmArgs args;
}