JPA @UtilityClass

아이스__아메리·2022년 10월 7일
0

JPA

목록 보기
5/18

함수의 네임스페이스일 뿐이다. 인스턴스는 존재할 수 없으며 모든 구성원은 정적이다.

유틸리티 클래스는 인스턴스화할 수 없다. 로 클래스를 표시 @UtilityClass하면 lombok은 예외를 발생시키는 private 생성자를 자동으로 생성하고 추가한 명시적 생성자를 오류로 표시하고 클래스를 표시한다. final 클래스가 내부 클래스인 경우 해당 클래스도 로 표시 static이다.

지양해야되는 이유

객체는 기본적으로 자신의 상태와 행위를 가지고 자율적으로 행동한다.

Utility Class는?
→ 상태는 없고 행위만 가진다.
→ 모든 데이터를 입력으로만 전달 받는다. ( 자율성X )
사용하는 순간 Utility Class와 강결합이 된다.

보통 인터페이스나 추상클래스에 의존함으로써 구현체를 갈아끼울수 있는 유연성이 제공되지만, 이걸 사용하는 순간 그 유연성을 가질 수 없음...

단위 테스트를 어렵게 만든다.

단위테스트는 대상 메소드가 가진 기능만을 테스트해야한다.
Utility 클래스에 강결합 되어있기 떄문에 의존성을 분리하여 테스트 하는 것이 어렵다.
보통 한번 메모리에 올려놓고 다양한 곳에서 자주 사용할 것이니 static으로 메소드를 만들어 사용한다고 하는데.. → 그렇게 얻는 메모리 이점은 크지 않다고 한다.

오히려 인스턴스는 사용할떄만 생성되고 GC에 의해 반환된다.

profile
츠케멘 좋아

0개의 댓글