빌더패턴 (@Builder)
- 빌더패턴에 장점
- 불필요한 생성자의 제거
- 데이터의 순서에 상관없이 객체생성 가능
- 명시적 선언으로 이해하기가 쉽고 각 인자가 어떤 의미인지 알기 쉽다.(가독성)
- setter 메서드가 없으므로 변경 불가능한 객체를 만들수있다.(객체불변성)
- 한번에 객체를 생성하므로 객체 일관성이 깨지지 않는다.
- build() 함수가 null인지 체크해주므로 검증이 가능한다. (안그러면 set하지않은 객체에대해 get을 하게되는경우 nullPointerExcetpion발생 등등의 문제가 생김)
- ex)
@Builder
public class Person {
private String name;
private int age;
private int phone;
}
Person person = Person.builder() // 빌더어노테이션으로 생성된 빌더클래스 생성자
.name("seungjin")
.age(25)
.phone(1234)
.build();
@AllArgsConstructor , @NoArgsConstructor , @RequiredArgsConstructor
@NoArgsConstructor | 파라미터가 없는 기본 생성자를 생성 |
@AllArgsConstructor | 모든 필드 값을 파라미터로 받는 생성자를 만듦 |
@RequiredArgsConstructor | final이나 @NonNull인 필드 값만 파라미터로 받는 생성자 만듦 |
User user1 = new User(); // @NoArgsConstructor
User user2 = new User("user2", "1234"); // @RequiredArgsConstructor
User user3 = new User(1L, "user3", "1234", null); // @AllArgsConstructor
@GeneratedValue
@Id(PK) 에 대한 값을 생성
EntityManage 가 제공하는 메서드
- persist() -- 저장
- find() -- 조회
- remove() -- 삭제 (find로 전달된 데이터가 있어야 삭제가능)
- merge() -- 변경
엔티티 매핑
- @Entity - 엔티티 클래스에 설정, 필수
- @Table - 매핑할 테이블 지정 (생략하면 클래스 이름과 테이블 이름이 동일)
- @Id - 식별자 속성에 설정, 필수(Long 타입)
- @Column - 매핑할 칼람명지정 - 지정하지 않으면 필드명/프로퍼티명 사용
- @Enumerated - enum 타입 매핑할 때 설정
엔티티 클래스 제약조건(스펙 기준)
- @Entity 적용해야함
- @Id 적용해야함
- 인자 없는 기본 생성자 필요
- 기본 생성자는 public이나 protected여야 함
- 최상위 클래스여야 함
- final이면 안됨
'개발일기 > JPA' 카테고리의 다른 글
JPA API (엔티티를 DTO로 변환 , DTO로 바로 조회) (0) | 2023.07.20 |
---|---|
JPQL 조회 TEST (0) | 2023.07.03 |