Back-end/Spring Boot

[Spring DB] Annotation

Bay Im 2023. 11. 6. 10:22
  • @Entity
    • 클래스 위에 선언, 해당 클래스가 엔티티라는 것을 알려준다.
    • 해당 클래스에서 정의된 필드들로 데이터베이스에 테이블을 만들어 준다.
    • @Entity(name = “테이블이름”) 처럼 name 입력 시 이름 지정 가능
  • @Builder
    • 해당 클래스에 해당하는 엔티티를 만들 때 빌더 패턴을 이용해서 만들 수 있도록 지정해주는 어노테이션
  • @AllArgsConstructor
    • 선언된 모든 필드를 파라미터로 갖는 생성자 자동 생성
  • @NoArgsConstructor
    • 파라미터 없는 생성자 자동 생성
  • @Getter
    • 각 필드값을 조회할 수 있는 getter 메소드 자동 생성 ex) getName()
  • @Setter
    • setter() 메소드를 만들어 주지만, Entity 클래스에서는 setter 메소드를 만들지 않도록 한다.
  • @Table
    • @Entity 에서 생성해주는 테이블 이름 지정
    • (name = “이름 지정”)
  • @Column
    • 테이블의 컬럼을 나타내며 굳이 선언하지 않아도 해당 클래스의 필드는 모두 컬럼이 된다.
    • @Column 의 속성
      • name: 컬럼 이름, 미지정시 필드이름으로 설정된다.
      • nullable: 컬럼의 null 허용 여부, 설정하지 않으면 true
      • unique: 컬럼의 유일한 값 여부, 설정하지 않으면 false
      • columnDefinition: 컬럼 정보 설정, default 값을 줄 수 있다.
  • @Lob
    • Large Object의 줄임말, varchar보다 큰 문자열 길이
  • @GeneratedValue
    • Primary key 생성 규칙
    • (strategy = GererationType.IDENTITY) 옵션 시 해당 속성에 값을 따로 설정하지 않아도 자동으로 1씩 증가하여 저장된다.
  • @toString
    • toString() 메소드 자동 생성
  • @RequiredArgsContructor
    • required된 필드에 대한 생성자 자동 생성
    • 초기화되지 않은 final 필드나, @NonNull이 붙은 필드와 같이 반드시 값이 할당되어야 하는 필드들에 대한 생성자 생성

 

@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Table(name = "types")
public class PetType extends BaseEntity {

    @Builder
    public PetType(Long id, String name) {
        super(id);
        this.name = name;
    }

    @Column(name = "name")
    private String name;

    @Override
    public String toString() {
        return "PetType [name=" + name + "]";
    }

}
728x90