Tagged

커스텀 타입 만들기

A collection of 4 posts

하이버네이트

Enum Type 만들기

클래스 구현하기. EnhancedUserType와 ParameterizedType 인터페이스를 구현한다. private Class<Enum> enumClass; public void setParameterValues(Properties parameters) { String enumClassName = parameters.getProperty(“enumClassname”); try { enumClass = ReflectHelper.classForName(enumClassName); } catch (ClassNotFoundException cnfe) { throw new HibernateException(“Enum class not found”, cnfe); } } public Class returnedClass() { return enumClass; } public Object fromXMLString(

하이버네이트

ParameterizedType 만들기

클래스 구현하기 DB에 값을 저장할 때 특정 조건에 따라 다른 값으로 변환하여 저장할 필요가 있다면, 파라미터가 필요하다. 이럴 때 유요하다. ParameterizedType 인터페이스를 구현한다. private Currency convertTo; @Override public void setParameterValues(Properties parameters) { this.convertTo = Currency.getInstance( parameters.getProperty(“convertTo”)); } 맵핑하기 같은 Value Type 클래스 타입의 객체들 여럿을 맵핑

하이버네이트

CompositeUserType 만들기

클래스 구현하기 public class MonetaryAmountCompositeUserType implements CompositeUserType { public String[] getPropertyNames() { return new String[] { “amount”, “currency” }; } public Type[] getPropertyTypes() { return new Type[] { Hibernate.BIG_DECIMAL, Hibernate.CURRENCY }; } public Object getPropertyValue(Object component, int property) throws HibernateException { MonetaryAmount monetaryAmount = (MonetaryAmount) component; if (property == 0) return monetaryAmount.getAmount(); else

하이버네이트

UserType만들기

클래스 구현하기 public class MonetaryAmountUserType implements UserType { public Object assemble(Serializable cached, Object owner) throws HibernateException { return cached; } public Object deepCopy(Object value) throws HibernateException { return value; } public Serializable disassemble(Object value) throws HibernateException { return (Serializable) value; } public boolean equals(Object x, Object y) throws HibernateException { if (x == y) return