TIL - day21

정상화·2023년 3월 21일

TIL

목록 보기
17/46
post-thumbnail

Transactional

테스트환경에서는 리포지토리를 이용한 통신만 가능하다.

@Transactional은 메서드가 종료될 때까지 DB와의 접속을 유지한다.

FetchType

하이버네이트의 FetchType에는 EAGER(즉시)와 LAZY(지연)이 있다.

  • EAGER: 객체를 DB로부터 조회할 때 연관 객체를 조인해서 한번에 긁어온다.
  • LAZY: 연관 객체가 참조할 필요가 있을 때가 되서야 DB에 쿼리를 날린다.

OneToMany

객체가 연관객체를 여러개를 가지는 관계일 때, 필드초기화를 강력히 권장한다.

@OneToMany(mappedBy = "question", cascade = CascadeType.REMOVE)
    private List<Answer> answerList = new ArrayList<>();

NullPointerException를 방지하기 위함이다.

도메인을 분리

응집도를 높이고 결합도를 낮추기 위함

응집도가 높아야 하는 이유

응집도가 높으면 유지보수가 편하다. 서로 관련 있는 것끼리 모여 있기 때문이다.

결합도가 낮아야 하는 이유

결합도가 낮으면 관리가 편하다. 관심사가 다른 모듈끼리는 한 쪽의 변화가 다른 쪽에 영향을 미쳐선 안된다.

profile
백엔드 희망

0개의 댓글