swimminginthecode DIVE!

BACK/Spring

Spring 07

dazz6 2024. 7. 22. 18:00
로그 레벨 순서
TRACE > DEBUG > INFO > WARN > ERROR > FATAL
종류 설명
TRACE DEBUG보다 조금 더 상세한 정보
DEBUG 프로그램을 디버깅하기 위한 정보 지정
INFO 상태 변경과 같은 정보성 메시지 
WARN 처리 가능한 문제, 향후 에러가 발생할 수 있는 경고성 메시지
ERROR 요청을 처리하는 중 문제가 발생한 경우
FATAL 아주 심각한 에러가 발생한 상태, 애플리케이션 작동이 불가능할 경우

JPA에서 lombok의 @Data
@Getter, @Setter, @EqualsAndHashCode, @ToString, @RequiredArgsConstructor, @AllArgsConstructor 가 포함된 어노테이션 

lombok이 제공하는 @Data 어노테이션은 여러 기능을 한번에 제공하기 때문에 유용하게 사용되지만, JPA에서 N:1 양방향 참조시 @ToString을 사용하면 순환 참조 문제가 발생할 수 있다.

연관관계에 의해 무한 참조가 걸려 StackOverFlowError* 가 발생할 수 있기 때문에, @ToString(exclude = " ") 속성을 사용하여 특정 항목을 제외시키거나 @Data가 아닌 필요한 어노테이션만 사용하는 것을 권장한다.

 

*StackOverFlowError : 재귀 호출이 너무 깊게 이뤄지거나 메모리 스택이 초과될 때 발생하는 오류 


연관관계 매핑
객체의 참조와 외래 키를 매핑하는 것 (SQL JOIN 과 비슷한 개념)
종류 설명
단방향 관계 두 엔티티가 관계를 맺을 때, 한쪽의 엔티티만 참조 
양방향 관계 두 엔티티가 관계를 맺을 때, 양쪽이 서로 참조 
연관관계 매핑에서의 다중성
종류 설명
@ManyToOne 다대일 (N : 1)
@OneToMany 일대다 (1 : N)
@OneToOne 일대일 (1 : 1)
@ManyToMany* 다대다 (N : M)

* @ManyToMany : 사용 지양. 다대다로 자동 생성된 중간 테이블은 두 객체의 테이블 외래 키만 저장되기 때문에 문제가 될 확률이 높다. 일대다, 다대일로 풀어서 만드는 것(중간에 매핑 테이블을 만드는 것)을 권장한다.

 

참고 블로그

[JPA] 연관관계 매핑 알아보기 (@ManyToOne, @OneToMany, @OneToOne, @ManyToMany) (tistory.com)

java에러 stackoverflowerror 해결방법 (tistory.com)

@Data는 왜 쓰면 안돼요? (velog.io)

로그레벨 정의 및 순서 (tistory.com)

'BACK > Spring' 카테고리의 다른 글

Spring 09  (0) 2024.07.29
Spring 08  (1) 2024.07.24
Spring 06  (0) 2024.07.19
Spring 05 - JdbcDaoSupport  (0) 2024.07.16
Spring 04 - annotation  (0) 2024.07.15