import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@Converter
public class StringListConverter implements AttributeConverter<List<String>, String> {
private static final String SPLIT_CHAR = ",";
@Override
public String convertToDatabaseColumn(List<String> attribute) {
if(attribute == null || attribute.isEmpty()){
return "";
}
return String.join(SPLIT_CHAR, attribute);
}
@Override
public List<String> convertToEntityAttribute(String dbData) {
if(dbData == null || dbData.trim().isEmpty()){
return Collections.emptyList();
}
return Arrays.asList(dbData.split(SPLIT_CHAR));
}
}
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.List;
@Entity
public class MyEntity {
@Id
private Long id;
@Column(name = "list_column")
@Convert(converter = StringListConverter.class)
private List<String> listColumn;
// getters and setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<String> getListColumn() {
return listColumn;
}
public void setListColumn(List<String> listColumn) {
this.listColumn = listColumn;
}
}
https://green-bin.tistory.com/106
JPA - 하나의 컬럼에 여러 개의 데이터를 저장하기
배경 프로젝트를 진행하면서 인스타그램의 Feed와 같은 기능을 구현중이었다. Feed에는 여러 장의 Image를 업로드할 수 있다. MultiPartFile로 전달 받은 Image들은 S3에 저장된 후 S3에 저장된 url을 String
green-bin.tistory.com
'Spring > 데이터 액세스 계층' 카테고리의 다른 글
[Spring] abstract, 인터페이스 VS 추상클래스, @EntityListeners (1) | 2024.07.02 |
---|---|
[Spring] JPA 애너테이션, 관계 매핑 (0) | 2024.07.02 |
[Spring] JDBC 페이지네이션 (0) | 2024.06.19 |
[Spring] JDBC, JPA (1) | 2024.06.16 |