실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기

Ch02. Java 서버를 Kotlin 서버로 리팩토링하자 - Kotlin과 JPA를 함께 사용할 때 주의할 점

webmaster 2022. 11. 1. 21:09
728x90

Setter

backing property
custom setter

  • setter를 사용하는 대신, 명시적인 이름의 가진 함수를 사용하는 것이 훨씬 clean 하다. -> setter를 열어둔다는 것은, 어디서든 이 setter를 호출할 수 있다는 것을 의미하기 때문이다.
  • public getter는 필요하지만, setter는 private 하게 만드는 것이 가장 좋다.
  • private 하게 setter를 만드는 방법
    • backing property 사용하기
    • custom setter 이용하기
    • 위 2가지 방법 모두 프로퍼티가 많으면 번거로우므로, setter를 열어두되 사용하지 않도록 상호 간의 컨벤션을 지키도록 하는 것도 좋은 방법이다.

생성자 안의 프로퍼티와 클래스 body안의 프로퍼티

  • 반드시 primary constructor 안에 모든 프로퍼티를 넣을 필요는 없다.
  • 모든 프로퍼티를 생성자에 넣거나, 명확한 기준을 가지고 분리를 시키거나 하면 된다.

JPA와 Data 클래스

  • Entity는 data class를 피하는 것이 좋다.
  • equals, hashCode, toString 모두 JPA Entity와는 100% 어울리지 않는다.
    • 특히 toString 같은 경우 내부적으로 순환 참조를 초래할 수도 있다.

TIP : Entity가 생성되는 로직을 찾고 싶다면, constructor 지시어를 명시적으로 작성하고 추적하면 된다.

Constructor 지시어를 명시적으로 작성해 실제 생성되는 로직만 볼 수 있다

728x90