사용자 도구

사이트 도구


java:jpa:converter

문서의 이전 판입니다!


JPA Converter

@Converter
public class PersonNameConverter implements
  AttributeConverter<PersonName, String> {
 
    private static final String SEPARATOR = ", ";
 
    @Override
    public String convertToDatabaseColumn(PersonName personName) {
        if (personName == null) {
            return null;
        }
 
        StringBuilder sb = new StringBuilder();
        if (personName.getSurname() != null && !personName.getSurname()
            .isEmpty()) {
            sb.append(personName.getSurname());
            sb.append(SEPARATOR);
        }
 
        if (personName.getName() != null
          && !personName.getName().isEmpty()) {
            sb.append(personName.getName());
        }
 
        return sb.toString();
    }
 
    @Override
    public PersonName convertToEntityAttribute(String dbPersonName) {
        if (dbPersonName == null || dbPersonName.isEmpty()) {
            return null;
        }
 
        String[] pieces = dbPersonName.split(SEPARATOR);
 
        if (pieces == null || pieces.length == 0) {
            return null;
        }
 
        PersonName personName = new PersonName();        
        String firstPiece = !pieces[0].isEmpty() ? pieces[0] : null;
        if (dbPersonName.contains(SEPARATOR)) {
            personName.setSurname(firstPiece);
 
            if (pieces.length >= 2 && pieces[1] != null
              && !pieces[1].isEmpty()) {
                personName.setName(pieces[1]);
            }
        } else {
            personName.setName(firstPiece);
        }
 
        return personName;
    }
}
 
@Entity(name = "PersonTable")
public class Person {
 
    @Convert(converter = PersonNameConverter.class)
    private PersonName personName;
 
    // ...
}
java/jpa/converter.1531287803.txt.gz · 마지막으로 수정됨: 2018/07/11 14:43 저자 kwon37xi