테스트환경에서는 리포지토리를 이용한 통신만 가능하다.
@Transactional은 메서드가 종료될 때까지 DB와의 접속을 유지한다.
하이버네이트의 FetchType에는 EAGER(즉시)와 LAZY(지연)이 있다.
객체가 연관객체를 여러개를 가지는 관계일 때, 필드초기화를 강력히 권장한다.
@OneToMany(mappedBy = "question", cascade = CascadeType.REMOVE)
private List<Answer> answerList = new ArrayList<>();
NullPointerException를 방지하기 위함이다.
응집도를 높이고 결합도를 낮추기 위함
응집도가 높으면 유지보수가 편하다. 서로 관련 있는 것끼리 모여 있기 때문이다.
결합도가 낮으면 관리가 편하다. 관심사가 다른 모듈끼리는 한 쪽의 변화가 다른 쪽에 영향을 미쳐선 안된다.