JPA Converter / 패스트캠퍼스 챌린지 28일차

망고쥬스·2021년 11월 28일
0

BookStatus

@Data
public class BookStatus{
	private int code;
	private String description;
    
	public BookStatus(int code){
		this.code = code;
		this.description = parseDescription(code);
	}
    
	public boolean isDisplayed(){
		return code == 200;
	}
    
	private String parseDescription(int code){
		switch(code){
			case 100:
				return "판매종료";
			case 200:
				return "판매중";
			case 300:
				return "판매보류";
			default:
				return "미지원";
			}
	}
}

Book Entity

@OneToMany
@JoinColumn(name="book_id")
@ToString.Exclude
private List<BookAndAuthor> bookAndAuthors = new ArrayList<>();

private boolean deleted;

@Convert(converter = BookStatusConverter.class)
private BookStatus status; //판매상태 ---> 에러발생
//BookStatus가 Entity의 속성으로 추가할 수 없다는 에러가 발생
   
public void addBookAndAuthors(BookAndAuthor... bookAndAuthors){
  
	Collections.addAll(this.bookAndAuthors, bookAndAuthors);
	}
}

domain - coverter - BookStatusConverter.java 생성

@Converter
public class BookStatusConverter implements AttributeConverter<BookStatus, Integer>{
//AttirvuteConverter<X, Y> 에서 
//	X => Entity의 Attribute 타입 (BookStatus)
//	Y => DB 컬럼에서의 타입 (Integer)
	@Override
	public Integer convertToDatabaseColumn(BookStatis attrivute){
		return attrivute.getCode();
	}

	@Override
	public BookStatus convertToEntityAttribute(Integer dbData){
		//nullable 하기 때문에 nullPointException에 대비 해 주어야 한다.
        return dbData != null ? new BookStatus(dbData) : null;
	}
}

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3FVdhDa

profile
#newbieDeveloper #since 2021.04.06

0개의 댓글