name 속성
은 유형의 이름을 나타내며, typeClass
는 유형을 구현하는 클래스를 지정합니다.예를들어
@TypeDef(name = "json", typeClass = JsonStringType.class)
public class UserEntity extends BaseEntity {
@Type(type = "json") // 적용할 타입의 이름
private Map<String, Object> meta;
}
인 경우에는 Hibernate에서 json이라는 이름의 사용자 정의 데이터 유형을 만드는 것입니다. JsonStringType 클래스는 Hibernate에서 제공하는 JsonType 클래스를 확장하여, JSON 형식으로 저장된 문자열 데이터를 엔티티의 필드에 매핑할 수 있도록 해줍니다. 따라서 @TypeDef가 선언된 UserEntity클래스의 meta 필드는 JSON 형식으로 저장된 문자열 데이터를 매핑할 수 있게 됩니다.
typeClass = JsonStringType.class에서 JsonStringType
을 사용하기 위해서는 아래의 의존성이 필요하다. (hibernate-types 이라고 검색하면나옴)
implementation 'com.vladmihalcea:hibernate-types-52:2.19.2'