JPA - Entity

2024. 10. 15. 18:39·TIL
목차
  1. Entity
  2. @Entity
  3. @Table
  4. @Column
  5. @ID
  6. 자동 할당 방식
  7. IDENTITY 전략
  8.  

Entity

Entity란 JPA에서 관리되는 클래스 즉 객체를 의미합니다.

데이터베이스와의 상호작용을 위한 매핑 정보도 포함되어있습니다.

 

@Entity

Jpa가 관리할 수 있도록 테이블과 매핑할 클래스에는 필수로 달아주어야한다. 

@Entity 어노테이션이 붙은 클래스는 JPA가 관리하게 되며, 이를 엔티티라고 부릅니다.

@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
public class Memo {
	...
}

name 속성을 이용하여 엔티티 클래스 이름을 지정할 수 있습니다. (default : 클래스 명)

@Entity(name = "Memo") // JPA가 관리할 수 있는 Entity 클래스 지정
public class Memo {
	...
}
주의사항

JPA가 Entity 클래스를 인스턴스화 할 때 기본 생성자를 사용하기 때문에
반드시 현재 Entity 클래스에 기본 생성자가 생성되고 있는지 확인해야합니다.

@Table

엔티티와 매핑할 테이블을 지정해줍니다

name 속성 생략 시 매핑한 Entity 클래스의 이름을 테이블 이름으로 사용합니다.

@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Table(name="Memo") // 매핑 할 테이블의 이름을 지정
public class Memo {
    ...
}

 

@Column

테이블의 컬럼을 지정해주는 어노테이션입니다.

@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Table(name = "memo") // 매핑할 테이블의 이름을 지정
public class Memo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // nullable: null 허용 여부
    // unique: 중복 허용 여부 (false 일때 중복 허용)
    @Column(name = "username", nullable = false, unique = true)
    private String username;

    // length: 컬럼 길이 지정
    @Column(name = "contents", nullable = false, length = 500)
    private String contents;
}

 

@ID

테이블의 기본 키를 지정해줍니다.

이 기본 키는 영속성 컨텍스트에서 Entity를 구분하고 관리할 때 사용되는 식별자 역할을 수행합니다.

 

JPA가 제공하는 기본 키 매핑 전략은 크게 직접 할당 방식과 자동 할당 방식으로 나뉩니다.

 

직접 할당 방식은 말 그대로 개발자가 직접 확인하고 넣어줘야하는 불편함이 발생합니다. 

또한 기본키는 식별자 역할을 수행하기에 값을 넣어주지 않은 채로 저장하면 오류가 발생합니다.

그렇기에 기본 할당 방식보다 자동 할당 방식을 추천한다고 합니다.

 

자동 할당 방식

	
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

 

자동 할당 방식은 데이터베이스마다 지원하는 방식이 다르기 때문에 다양한 전략이 있습니다.

그렇기에 DBMS에 알맞은 전략을 지정해주도록해야합니다.

저는 MySQL을 사용하기에 IDENTITY 전략을 사용하였는데요.

IDENTITY 전략

기본키 생성을 데이터베이스에 위임합니다.

주로  MySQL, PostgreSQL, SQL Server, DB2에서 사용합니다.

IDENTITY 전략은 객체를 영속화 시키는 시점에 곧바로 insert 쿼리가 DB로 전송되고, 거기서

반환 받은 식별자 값을 가지고 1차 캐시에 엔티티를 등록시켜 관리합니다.

 

IDENTITY 전략 이외에  Auto, SEQUENCE, TABLE 전략이 있는데 이 3개는 나중에 써 볼일이 있을 때 

정리해보려고 합니다.

 

 

 

 

 

 

 

 

'TIL' 카테고리의 다른 글

영속성 컨텍스트  (1) 2024.10.16
페이징 조회 - Pageble / PageRequest  (0) 2024.10.15
JPA - 댓글 CRUD  (2) 2024.10.14
JPA - 일정 CRUD  (1) 2024.10.13
JPA  (1) 2024.10.10
  1. Entity
  2. @Entity
  3. @Table
  4. @Column
  5. @ID
  6. 자동 할당 방식
  7. IDENTITY 전략
  8.  
'TIL' 카테고리의 다른 글
  • 영속성 컨텍스트
  • 페이징 조회 - Pageble / PageRequest
  • JPA - 댓글 CRUD
  • JPA - 일정 CRUD
haseung22
haseung22
haseung22 의 블로그 입니다.
  • haseung22
    haseung22의 블로그
    haseung22
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • TIL (39)
      • 프로그래머스 (8)
      • 프로젝트 (5)
      • 면접 대비 (4)
        • 자료구조 (3)
        • Java (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    회고
    자료구조
    JPA
    java
    오블완
    Spring
    팀 프로젝트
    공부
    프로그래머스
    Spring Boot
    리팩토링
    내배캠
    알고리즘
    til
    뉴스피드
    docker
    과제
    티스토리챌린지
    querydsl
    계산기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
haseung22
JPA - Entity

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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