Entity 에 사용되는 Annotation

DongGyun Cho·2023년 3월 11일

Java/Spring/Annotation

목록 보기
2/7

출처:

Entity

Entity는 일반적으로 우리(개발자)가 사용하는 테이블 하나하나를 말한다.

JPA를 사용하는 프로젝트에서 Domain을 자바 객체로 생성할 때 사용하는 Annotation들을 살펴보자.

@Entity

@Entity가 붙은 클래를 JPA가 관리해주며, 데이터베이스 테이블과 매핑할 클래스는 @Entity를 꼭 붙여야만 매핑이 가능합니다.

@Table

@Table은 엔티티와 매핑할 테이블을 지정해주기 위해 사용된다. @Table(name = "원하는 이름") 으로 일반적으로 사용되며, @Table이 아닌 @Entity에 name 속성을 사용해도 된다.

@Id

@Id는 특정 속성을 기본키로 설정하기위한 어노테이션이다.
일반적으로 @Id 어노테이션을 작성할때, @GeneratedValue를 함께 붙여주곤 한다.

@GeneratedValue

@GeneratedValue 어노테이션을 사용하면 기본값을 DB에서 자동으로 생성하는 전략 사용이 가능하다.

|속성|기능|
|@GeneratedValue(startegy = GenerationType.IDENTITY)|기본 키 생성을 DB에 위임 (Mysql)
|
|@GeneratedValue(startegy = GenerationType.SEQUENCE) |DB시퀀스를 사용해서 기본 키 할당 (ORACLE)
|
|@GeneratedValue(startegy = GenerationType.TABLE)|키 생성 테이블 사용 (모든 DB 사용 가능)
|
|@GeneratedValue(startegy = GenerationType.AUTO) |선택된 DB에 따라 자동으로 전략 선택
|

@Column

@Column은 Java 필드를 테이블 컬럼과 매핑한다.

@ManyToOne

해당 엔티티(테이블)과 다른 엔티티에 관계를 연결시켜줄 때 사용되며, 해당 객체에 입장으로 연결되는 엔티티와의 관계가 N:1관계로 여겨질 때 사용할 수 있다.

고객(1)은 계좌(N)를 여러개 가질 수 있다
따라서 계좌 객체에 @ManyToOne을 붙여 사용할 수 있다.

@OneToMany

해당 엔티티(테이블)과 다른 엔티티에 관계를 연결시켜줄 때 사용되며, 해당 객체에 입장으로 연결되는 엔티티와의 관계가 1:N관계로 여겨질 때 사용할 수 있다.

고객(1)은 계좌(N)를 여러개 가질 수 있다
따라서 고객 객체에 @OneToMany를 붙여 사용할 수 있다.


Lombok 에서 제공하는 공통적으로 많이 사용되는 Annotation 들은 추후에 따로 작성하도록 하겠다.

2023.03.11 - 현재까지 사용해보거나 인지하고 있는 @Annotation들 정리

profile
끈기를 가지고 해보자.

0개의 댓글