JPA의 Entity를 새롭게 생성하려면 다음과같은 3가지 선택지가 주어진다.
1. 생성자로 생성하기
2. 정적 팩토리 메소드로 생성하기
3. @Builder 로 생성하기
그 중에서도 정적 팩토리 메소드 부분을 소개하겠다.
개인적으로도 이 방식이 더 마음에 든다.
정적 팩토리 메소드의 생김새
다음과 같이, public static(정적) 을 사용한다.
그렇다면 정적 팩토리 메소드를 왜 사용할까??
정적 팩토리의 장점 3가지를 살펴보려고한다.
1. 자유롭게 메소드명을 설정할수 있다.
첫번째가 생성자 메소드고,
두번째가 정적 팩토리 메소드이다.
생성자 메소드 같은경우엔, 반드시 자신의 클래스명을 입력해야한다.
반면에, 정적 팩토리 메소드는 메소드명을 작성할수 있기때문에,
좀 더 직관적인 사용이 가능하다.
솔직히, User 객체 생성하는데, CreateUser 이라고 직관적으로 눈에 확 의미가 와닿으면 이해하기 빠르다.
2.정적 팩토리 메소드를 호출할때 new 예약어를 쓸 필요가 없다.
첫번째가 생성자
두번째가 정적 팩토리 메소드다.
정적 팩토리 메소드는 Static 메모리 영역에 존재하기 때문에, 바로 User에 접근이가능하다.
이 장점은 직접 코딩해보면 확 와닿는다.
User user = new User(); 코딩과,
User. (자동완성)CreateUser(); 코딩의 생산속도를 비교해보면 후자가 더 편리하다.
3. 데이터의 반환이 자유롭다.
첫번째가 생성자
두번째가 정적 팩토리 메소드다.
생성자 방식은, 다음과같이 무조건 User를 반드시 반환하게 된다.
반면에, 정적 팩토리메소드는 타입의 반환이 매우 자유롭기때문에, 형변환이 자유롭다.
예를들어, DTO-> Entity 또는 Parameter값에따른 객체반환이가능하다 (0~50 C , 51~80 B , 81~100 A )
여기서 오는 이점은 무궁무진하다.
'자바 > JPA' 카테고리의 다른 글
Querydsl 기능 (2) (0) | 2022.07.27 |
---|---|
Querydsl 기능 (1) (0) | 2022.07.27 |
스프링 JPA Querydsl 소개 (0) | 2022.07.25 |
JPA 값타입 (0) | 2022.06.27 |
JPA : 상속관계 매핑 (0) | 2022.06.15 |