사용자 도구

사이트 도구


java:jpa:converter

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
다음 판 양쪽 다음 판
java:jpa:converter [2018/07/11 14:39]
kwon37xi 만듦
java:jpa:converter [2018/08/28 13:48]
kwon37xi
줄 4: 줄 4:
   * [[http://www.baeldung.com/jpa-attribute-converters|JPA Attribute Converters | Baeldung]]   * [[http://www.baeldung.com/jpa-attribute-converters|JPA Attribute Converters | Baeldung]]
  
 +<code java>
 +@Converter
 +public class PersonNameConverter implements AttributeConverter<PersonName, String> {
 + 
 +    @Override
 +    public String convertToDatabaseColumn(PersonName personName) {
 +        // object to DB column 구현
 +    }
 + 
 +    @Override
 +    public PersonName convertToEntityAttribute(String dbPersonName) {
 +       // DB column to object 구현
 +}
 +
 +@Entity(name = "PersonTable")
 +public class Person {
 + 
 +    @Convert(converter = PersonNameConverter.class)
 +    private PersonName personName;
 +     
 +    // ...
 +}
 +</code>
 +
 +===== 잘못된 Colum Type 매핑 =====
 +  * AttributeConverter 를 사용하여 String, Number 같은 다소 광의의 타입을 명시적 비즈니스 도메인 타입으로 매핑했을 때(예: ISBN), 보통 해당 타입이 ''Serializable''을 구현하면서 Hibernate가 무조건 ''VARBINARY''로 매핑하는 버그가 있다(현재 5.2.x 버전도 마찬가지)
 +  * 이때 [[https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypes.java|StandardBasicTypes.java]]에 나온 타입들을 명시적으로 지정해주면 된다.
 +
 +<code java>
 +@Convert(converter=ISBNConverter.class)
 +@org.hibernate.annotations.Type(type="string")
 +private ISBN isbn;
 +</code>
  
java/jpa/converter.txt · 마지막으로 수정됨: 2022/11/18 15:05 저자 kwon37xi