사용자 도구

사이트 도구


java:hibernate:usertype

Hibernate User Type

UserType의 등록

  • @org.hibernate.annotations.TypeDef@org.hibernate.annotations.TypeDefs를 통해 사용자 정의 타입에 짧은 이름을 부여해 둘 수 있다.
  • 위 애노테이션은 Package(package-info.java)나 Entity class 레벨에 부여할 수 있다.
  • package-info.java에 등록할 경우에는 Hibernate냐 JPA에 따라 패키지 지정작업이 필요하다.
    • JPA persistence.xml
      <class>com.foo.bar.thepackage</class>
    • Hibernate cfg.xml
      <resource package="com.foo.bar.thepackage"/>
  • 패키지에 모든 파라미터까지 포함하여 미리 등록해 두는 것도 가능하다. package-info.java
    @TypeDefs({
    	@TypeDef(name = "some_enum", typeClass = GenericEnumUserType.class,
    		parameters = {
    			@Parameter(name = "enumClass", value = "kr.pe.kwonnam.usertype.SomeEnum"),
    			@Parameter(name = "identifierMethod", value = "toShortName"),
    			@Parameter(name = "valueOfMethod", value = "fromShortName")
    		})
    })
    package kr.pe.kwonnam.usertype;
     
    import org.hibernate.annotations.Parameter;
    import org.hibernate.annotations.TypeDef;
    import org.hibernate.annotations.TypeDefs;
    // Entity class
    // 이제 엔티티 클래스에서는 다음과 같이 간단히 등록 가능
    @Type(type = "some_enum")
    @Column(name = "some_enum", length = 2, nullable = true)
    private SomeEnum someEnum;

Primary Key

  • Primary Key(Identifier)나 Descriminator(상속관계에서 구분자?)로 사용할 Custom Type은 org.hibernate.usertype.EnhancedUserType를 구현해야 한다.

java.time.Year, java.time.Month

참고

java/hibernate/usertype.txt · 마지막으로 수정됨: 2018/10/24 10:26 저자 kwon37xi