본문 바로가기
학습/Java

[java] @Entity와 @Builder

by KKambi 2020. 2. 5.

Entity와 Repository

- ★ Entity클래스와 Entity Repository는 같은 패키지에 위치해야 함!

- Entity: @Entity를 선언해서 생성

- Repository:

public interface PostsRepository extends JpaRepository<Entity 클래스, PK타입>{

}

 

 

 

Entity 클래스는 Setter를 만들지 않는다

- @Getter만 선언

- @Setter 선언 시, 해당 Entity 클래스의 인스턴스 값들이 언제, 어디서 변하는지 명확히 나타나지 않음

 

ex) 목적과 의도를 명확히 나타내는 메소드를 추가해야 함

public class Order {
	private boolean status;

	public void cancleOrder() {
    	this.status = false;
    }
}

public void 주문서비스_취소이벤트() {
	order.cancleOrder();
}

 

 

 

생성자를 통한 객체 생성의 문제점

- 현재 채워야하는 필드가 무엇인지 명확히 알 수 없음

- 파라미터가 정확히 어느 필드에 대입되는지 모름

 

ex) 객체를 생성하는 사람은 코드를 실행하기 전까지 문제를 알 수 없다.

public Example(String a, String b) {
	this.a = a;
    	this.b = b;
}

new Example(b, a);

 

 

 

빌더 패턴의 장점

- 어느 필드에 어떤 값이 들어가야하는지 명확히 알 수 있다.

- @Builder는 생성자 상단에 선언해주면, 그 생성자에 포함된 필드에 대해 빌더 메소드를 자동 생성

Example.builder()
	.a(a)
    	.b(b)
    	.build();

 

댓글