JPA

JPA Annotation 정리

요료료룡 2024. 3. 29. 17:14

안녕하세요~! 오늘은 JPA에서 사용하는 어노테이션에 대해 정리를 해보았습니다.

참고하시어 여러분의 개발에 도움이 되었으면 좋을 것 같네요!!

 

Annotation 설명
@Entity
  • JPA가 관리하는 테이블과 매핑되는 객체가 된다.
  • 기본적으로 Class 이름이 테이블명이 됨.
  • @Entity가 사용된 클래스를 “엔티티 클래스”라 한다.
@Table
  • 엔티티 클래스와 매핑할 테이블 정보를 알려준다.
  • “name 속성”을 사용해서 Member 엔티티를 MEMBER 테이블에 매핑
  • 이 어노테이션을 생략하면 “클래스 이름”을 그대로 테이블 이름으로 매핑
@Id
  • 엔티티 클래스의 필드 테이블의 기본 키 (Primary Key)에 매핑
  • 엔티티의 id필드를 테이블의 ID 기본 키 컬럼에 매핑
  • @Id가 사용된 필드를 “식별자 필드”라 한다.
  • @Id 만 사용할 경우 기본 키를 직접 할당 → @GeneratedValue
@GeneratedValue
  • 지정한 Generator로 ID를 생성
@Column
  • 필드를 컬럼에 매핑한다.
  • “name 속성”을 사용해서 Member 엔티티의 username 필드를 테이블의 NAME 컬럼에 매핑
@Data
  • lombok 라이브러리의 @Getter @Setter , @RequiredArgsConstructor, @ToString, @EqualsAndHashCode를 전부 통합한 어노테이션
@GenericGenerator
  • ID 생성 하는 Generator를 지정
@NonNull
  • lombok이 자동으로 NonNull이 붙은 properties들로 생성자를 만들어 줌
@OneToMany
  • 1 : N관계를 명시함.
@Getter
  • 해당 클래스에 포함된 멤버 변수의 모든 getter 메서드를 생성해주는 롬복의 강력한 기능
@Builder
  • 해당 클래스의 빌더 패턴 클래스를 생성
  • 생성자 상단에 선언 시 생성자에 포함된 필드만 빌더에 포함
@Bean
  • 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean(자바 객체)으로 만들 때 사용
@Component
  • 개발자가 생성한 Class를 Spring의 Bean 으로 등록할 때 사용하는 어노테이션.
  • Spring은 해당 어노테이션을 보고 Spring의 Bran으로 등록
@Autowired
  • 속성(field), setter method, constructor(생성자)에게 사용하며 Type에 따라 알아서 Bean을 주입해준다.
  • 이 어노테이션을 사용하면 스프링이 자동적으로 값을 할당한다.
@Controller
  • Spring의 Controller를 의미. Spring MVC에서 Controller클래스에 쓰임
@RestController
  • @Controller에 @ResponseBody가 결합된 어노테이션
  • Json형태로 객체 데이터 반환
@Service
  • Service Class에 쓰임
  • 비즈니스 로직을 수행하는 Class라는 것을 나타내는 용도
@Repository
  • DAO 객체 class에 쓰임
  • DB에 접근하는 method를 가지고 있는 클래스에서 쓰임
@EmbeddedId
  • 복합 키 정의
@Embeddable
  • 값 타입을 정의하는 곳에 표시
@Embedded
  • 값 타입을 사용하는 곳에 표시
@ResponseBody
  • 리턴 타입이 HTTP의 응답 메시지로 전송
@RequiredArgsConstructor
  • 임의의 코드 없이 자동으로 설정
  • final 혹은 @NotNull이 붙은 필드의 생성자를 자동으로 만들어 줌.
@JoinColumn
  • 테이블들 간 연관관계를 설정해 줄 때 일대다( 1 : N )관계일 때 사용하여 해당 컬럼의 이름 설정
@Slf4j
  • 로그를 남기는 방식 중 logger 클래스를 사용할 수 있게 해주는 어노테이션
@Valid
  • @NotBlank와 같은 유효성 검사들을 해주는 어노테이션
@Lob
  • Large Object로 이름에 걸맞게 저장할 수 있는 데이터의 양이 4기가로 대용량이다.

 

추가로 Lombok의 대표 Annotation입니다.

Annotation 설명
@Setter
  • Class 모든 필드의 Setter method를 생성해 줌.
@Getter
  • Class 모든 필드의 Getter method를 생성해 줌.
@AllArgsConstructor
  • Class 모든 필드 값을 파라미터로 받는 생성자를 추가.
@NoArgsConstructor
  • Class 기본 생성자를 자동으로 추가.
@ToString
  • Class 모든 필드의 toString method를 생성.

 

도움이 되셨으면 좋겠습니다. 감사합니다.