Spring Boot:JPA 어노테이션

aiden·2023년 11월 28일
0

Backend

목록 보기
5/17

JPA 어노테이션

JPA를 사용하기 위해 제공되는 주요 어노테이션은 다음과 같다.

  1. @Entity : 이 어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티 클래스임을 나타낸다. 해당 클래스의 인스턴스는 데이터베이스의 레코드와 매핑된다.

  2. @Id : 이 어노테이션이 붙은 필드는 해당 엔티티의 기본 키(primary key)임을 의미한다.

  3. @GeneratedValue : 기본 키의 값을 자동으로 생성하기 위한 어노테이션이다. 보통 @Id 어노테이션과 함께 사용한다.
    기본 키 생성 시 GenerationType.IDENTITY를 이용하면 MySQL의 AUTO_INCREMENT와 같은 효과를 얻을 수 있다.
    다음과 같이 사용한다.

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
  4. @Column : 이 어노테이션이 붙은 필드는 데이터베이스 테이블의 칼럼과 매핑된다.

  5. @Table : 엔티티 클래스와 매핑할 테이블을 지정한다.

  6. @OneToMany, @ManyToOne, @OneToOne, @ManyToMany : 엔티티 간의 관계를 나타낸다.

    • @OneToOne : 일대일 관계. 한 엔티티가 다른 엔티티와 하나의 관계만을 가질 때 사용한다.

    • @OneToMany : 일대다 관계. 한 엔티티가 다른 엔티티와 여러 개의 관계를 가질 때 사용한다. 다음 예시와 같이 사용할 수 있다.

      @Entity
      public class Dept {
          @Id
          @GeneratedValue(strategy = GenerationType.IDENTITY)
          private Long id;
      
          private String name;
      
          //한 학과에는 여러 학생이 소속될 수 있다.
          @OneToMany(mappedBy = "dept") //학과와 학생 간의 관계를 학생 쪽에서 관리
          private List<Student> students = new ArrayList<>();
      }
    • @ManyToOne : 다대일 관계. 여러 개의 엔티티가 한 엔티티와 관계를 가질 때 사용한다. 다음 예시와 같이 사용할 수 있다.

      @Entity
      public class Student {
      	@Id
      	@GeneratedValue(strategy = GenerationType.IDENTITY)
      	private Long id;
      
      	private String name;
      
          //학생은 한 학과에만 소속될 수 있다.
      	@ManyToOne //학생 테이블에 추가될 외래 키 컬럼의 이름을 dept_id로 지정
      	@JoinColumn(name = "dept_id")
      	private Dept dept;
      }
    • @ManyToMany : 다대다 관계. 여러 개의 엔티티가 여러 개의 다른 엔티티와 관계를 가질 때 사용한다.

  7. @JoinColumn : 외래 키(foreign key)를 매핑할 때 사용하는 어노테이션이다.

  8. @Transient : 이 어노테이션이 붙은 필드는 데이터베이스에 매핑되지 않는다. 즉, 데이터베이스에 저장되거나 조회되지 않는다. 엔티티 클래스 내에 데이터베이스 테이블과는 관계없는 필드를 가지고 있어야 하는 경우나, 계산 결과를 임시로 저장하고 싶은 필드가 있는 경우 등에 사용할 수 있다.

profile
파인애플 좋아하세요?

0개의 댓글