자바/JPA

JPA Entity 정적 팩토리 메소드에 관하여

류창 2022. 9. 19. 20:45
반응형

 

 

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