본문 바로가기

개발일기/JPA

JPA 기본

728x90
반응형

빌더패턴 (@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이면 안됨
728x90
반응형

'개발일기 > JPA' 카테고리의 다른 글