전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (174)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

Springboot/블로그만들기

[Springboot] 블로그 만들기 (36)_무한참조 방지하기

2023. 12. 8. 17:27

Board.java

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity 
public class Board {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY) // auto_increment
	private int id;
	
	@Column(nullable = false, length = 100)
	private String title;
	
	@Lob
	private String content; 

	private int count; 

	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="userId")
	private User user;
	
	@OneToMany(mappedBy = "board", fetch = FetchType.EAGER)
	private List<Reply> replys;
	
	@CreationTimestamp
	private Timestamp createDate;
}

Reply.java

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
public class Reply {
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY) 
	private int id; 

	@Column(nullable = false, length = 200)
	private String content;
	
	@ManyToOne
	@JoinColumn(name = "boardId")
	private Board board;

	@ManyToOne(fetch = FetchType.EAGER
	@JoinColumn(name="userId")
	private User user;
	
	@CreationTimestamp
	private Timestamp createDate;
}

 

ReplyControllerTest

 

@RestController
public class ReplyControllerTest {
	
	@Autowired
	private BoardRepository boardRepository;
	
	@GetMapping("/test/board/{id}")
	public Board getBoard(@PathVariable int id) {
		return boardRepository.findById(id).get(); // jackson 라이브러리 (오브젝트를 json으로 리턴) => 모델의 getter를 호출
	}
}

http://localhost:8001/test/board/1

Board 객체가 reply객체를 갖고 있고 reply객체는 Board객체를 갖고 있다.

즉 Board와 Reply를 계속 왔다갔다 하면서 무한 참조가 발생한다.


Board.java

@JsonIgnoreProperties 어노테이션을 Board에 추가해서 Board객체를 불러올때 Reply에 대해 참조를 막아서 무한참조를 방지한다.

@JsonIgnoreProperties({"board"}) // 참조 방지
@OneToMany(mappedBy = "board", fetch = FetchType.EAGER)
private List<Reply> replys;

 

 


참고 유튜브 (메타코딩님 강의)

https://youtu.be/DjnMw07U1VI?si=G38WipoEsiws8-ZU

    'Springboot/블로그만들기' 카테고리의 다른 글
    • [Springboot] 블로그 만들기 (38)_댓글 작성하기 (Dto사용)
    • [Springboot] 블로그 만들기 (37)_댓글 작성하기
    • [Springboot] 블로그 만들기 (35)_댓글 디자인, 불러오기
    • [Springboot] 블로그 만들기 (34)_카카오 로그인(3) 로그인 및 회원가입 구현완료
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바