ParameterizedType 만들기

클래스 구현하기



  • DB에 값을 저장할 때 특정 조건에 따라 다른 값으로 변환하여 저장할 필요가 있다면, 파라미터가 필요하다. 이럴 때 유요하다.


  • ParameterizedType 인터페이스를 구현한다.


private Currency convertTo;

@Override
public void setParameterValues(Properties parameters) {
this.convertTo = Currency.getInstance(
parameters.getProperty(“convertTo”));
}


맵핑하기



  • 같은 Value Type 클래스 타입의 객체들 여럿을 맵핑 할 때는 TypeDef 애노테이션을 사용해서, 전역에서 사용할 설정을 정의해 둘 수 있다.


@org.hibernate.annotations.TypeDefs({
@org.hibernate.annotations.TypeDef(
name=“monetary_amount_usd”,
typeClass = persistence.MonetaryAmountConversionType.class,
parameters = { @Parameter(name=“convertTo”, value=“USD”) }
),
@org.hibernate.annotations.TypeDef(
name=“monetary_amount_eur”,
typeClass = persistence.MonetaryAmountConversionType.class,
parameters = { @Parameter(name=“convertTo”, value=“EUR”) }
)
})


  • 위의 설정은 import문 바로 아래 또는 class정의 부분 위나, 별도의 자바 파일, package-info.java 같은 클래스에 둔다.(2.2.1 참조)


  • 다음과 같이 참조해서 사용할 수 있다.


@org.hibernate.annotations.Type(type = “monetary_amount_eur”)
@org.hibernate.annotations.Columns({
@Column(name = “BID_AMOUNT”),
@Column(name = “BID_AMOUNT_CUR”)
})
private MonetaryAmount bidAmount;

Leave a Reply

Your email address will not be published. Required fields are marked *