빈쿵바라기
좌충우돌 개발자의 기록
빈쿵바라기
전체 방문자
오늘
어제
  • 분류 전체보기 (53)
    • Programming (25)
      • JAVA (12)
      • Spring Boot (6)
      • JPA (7)
      • Python (0)
    • Database (12)
      • RDBMS (4)
      • NoSQL (7)
    • Server (11)
    • Elasticsearch (3)
    • ETC (2)

블로그 메뉴

    공지사항

    인기 글

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    빈쿵바라기
    Programming/JPA

    [Spring Data JPA] JPA 주요 어노테이션(Annotation)

    [Spring Data JPA] JPA 주요 어노테이션(Annotation)
    Programming/JPA

    [Spring Data JPA] JPA 주요 어노테이션(Annotation)

    2022. 7. 31. 22:54

     

    JPA에는 어노테이션을 통해 여러가지 설정을 할 수 있다.

    어떤 어노테이션들이 있는지 정리해보자.

    Entity 관련

    @Entity
    @Table(name = "member")
    public class Member {
    
        @Id
        @GeneratedValue(startegy=GenerationType.IDENTITY)
        private Integer id;
        
        @Column(name="member_name")
        private String memberName;
        
        @Enumerated(value=EnumType.STRING)
        private RoleType role;
        
        @Column(name="created_time")
        @Temporal(value=TemporalType.TIMESTAMP)
        private LocalDateTime createdTime
        
        @Transient
        private String tempStr;
    }
    
    //Enum 클래스
    public enum RoleType {
        ADMIN, USER
    }
    • @Entity
      • 데이터베이스의 테이블과 일대일로 매칭이 됨.
    • @Table(name="table_name")
      • table_name에 해당되는 테이블과 매핑됨.
      • 옵션
        • name : 매핑할 테이블의 이름을 지정
        • catelog : DB의 catelog를 매핑
        • schema : DB 스키마와 매핑
        • uniqueConstraint : DDL쿼리를 작성할 때 제약조건을 생성
    • @Column(name="column_name")
      • column_name에 해당되는 컬럼과 매핑이 되며, 지정하지 않는다면 멤버변수의 이름과 같은 Column과 매핑이 됨
      • 그외 옵션
        • inserttable : entity 저장시 선언된 필드도 같이 저장 (default=true)
        • updateable : entity 수정시 선언된 필드도 같이 수정 (default=true)
        • nullable : NULL 허용 여부 설정 (default=false)
        • unique : 제약조건 설정 (default=false)
        • table : 지정한 필드를 다른 테이블에 매핑
        • length : varchar의 길이를 조정. (defalut=255)
    • @Id
      • 객체를 식별하는 유일값으로 지정함. 해당 어노테이션이 붙은 멤버변수는 해당 테이블의 Primary Key가 됨
    • @GeneratedValue(stargety="IDENTITY")
      • Entity가 저장될 때 기본키를 자동으로 생성하는 전략을 결정함.
      • 옵션
        • AUTO(default) : JPA 구현체가 자동으로 생성 전략을 선택
        • IDENTITY : 기본키 생성을 데이터베이스에 위임
        • SEQUENCE: 데이터베이스의 특별한 오브젝트 시퀀스를 사용하여 기본키를 생성
        • TABLE_: 데이터베이스에 키 생성 전용 테이블을 만들어 이를 이용해 기본키를 생성
    • @Enumerated
      • 자바 enum타입과 매핑할 때 사용
      • 옵션
        • EnumType.ORDINAL : enum의 순서를 저장
        • EnumType.STRING : enum의 이름을 저장
    • @Temporal
      • 날짜 타입을 매핑할 때 사용
      • 옵션
        • TemporalType.DATE
        • TemporalType.TIME
        • TemporalType.TIMESTAMP
    • @Transient
      • 객체에 임시로 값을 보관하고자 할 때 사용
      • 지정된 필드는 DB에 저장하거나 조회하지 않음.

     

    Join 관련

    • 두 엔티티간의 관계를 나타내는 어노테이션
      • @OneToMany : 일대다(1:N)
      • @OneToOne : 일대일(1:1)
      • @ManyToMany : 다대다(N:N)
      • @ManyToOne : 다대일(N:1)
    • @JoinColumn(name="columnName")
      • 외래 키를 매핑할 때 사용하며, name속성에는 매핑할 외래키 이름을 지정.

     

    JPA Join에 대한 상세 내용은 다음 포스팅에서 자세하게 다뤄보자.

    저작자표시 (새창열림)

    'Programming > JPA' 카테고리의 다른 글

    [Spring Data JPA] Query를 사용하는 여러가지 방법  (0) 2022.08.11
    [Spring Data JPA] FetchType - 즉시 로딩(EAGER)과 지연 로딩(LAZY)  (0) 2022.08.04
    [Spring Data JPA] 양방향 순환참조 문제 및 해결방법  (0) 2022.08.03
    [Spring Data JPA] JPA 연관관계 매핑(JOIN)  (0) 2022.08.02
    [Spring Data JPA] JPA란? JPA기본 예제  (0) 2022.07.25
      'Programming/JPA' 카테고리의 다른 글
      • [Spring Data JPA] FetchType - 즉시 로딩(EAGER)과 지연 로딩(LAZY)
      • [Spring Data JPA] 양방향 순환참조 문제 및 해결방법
      • [Spring Data JPA] JPA 연관관계 매핑(JOIN)
      • [Spring Data JPA] JPA란? JPA기본 예제
      빈쿵바라기
      빈쿵바라기
      삽질하는 개발자의 좌충우돌 개발기

      티스토리툴바

      개인정보

      • 티스토리 홈
      • 포럼
      • 로그인

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.