스프링

엔티티 클래스(Entity Class)

zumsim 2023. 1. 8. 03:39
728x90
반응형

JPA를 공부하며 접하게 되는 엔티티 클래스는

데이터베이스 테이블에 대응하는 클래스로 테이블과 같은 구조로 작성합니다.

 

@Entity

 

엔티티 클래스는 Spring Data JPA에서는 반드시 @Entity라는 어노테이션을 추가해야만 한다.

해당 클래스가 엔티티를 위한 클래스이며, 해당 클래스의 인스턴스들이 JPA로 관리되는 객체라는 것을 의미한다.

또한, 이 어노테이션이 붙은 클래스는 옵션에 따라 자동으로 테이블을 생성하고 멤버 변수에 따라 자동으로 컬럼을 생성하기도 한다.

 

 

@Table

 

@Entity와 같이 사용 할 수 있는 어노테이션으로 데이터베이스상에서 엔티티 클래스를 어떤 테이블로 생성 할 것인지에 대한 정보를 담기 위한 용도로 쓴다.

예로 @Table(name='user_table')로 작성시 user_table이라는 이름으로 테이블이 생성된다.

name 속성값이 없는 경우엔 클래스의 이름과 동일한 이름으로 생성된다.

 

 

@Id와 @GeneratedValue

 

@Entity가 붙은 클래스는 PK로 쓸 필드를 @Id로 지정해야 한다.

PK를 자동으로 생성되는 번호로 사용하는 경우엔 @GeneratedValue라는 어노테이션도 함께 사용해야 한다.

@GeneratedValue는 키 생성 전략이라고도 하고 크게 다음과 같다.

AUTO(default) - JPA 구현체(스프링 부트에서는 Hibernate)가 생성 방식을 결정
IDENTITY - 사용하는 데이터베이스가 키 생성을 결정한다. MySQL이나 MariaDB의 경우 auto increment를 사용
SEQUENCE - 데이터베이스의 sequence를 이용해서 키를 생성. @SequenceGenerator와 같이 사용
TABLE - 키 생성 전용 테이블을 생성해서 키 생성. @TableGenerator와 함께 사용

 

 

@Column

 

추가적인 필드(컬럼)가 필요한 경우에 사용한다.

nullable, name, length등을 이용해서 컬럼에 필요한 정보를 제공 할 수 있고 columnDefinition을 이용하면 기본값을 지정할 수도 있다.

 

 

@Transient

 

@Column과는 반대로 테이블에 컬럼으로 생성되지 않는 필드의 경우에 적용한다.

728x90
반응형

'스프링' 카테고리의 다른 글

[Spring] Pageable 인터페이스 사용해보기  (0) 2023.01.08
[Spring] JpaRepository 사용법  (0) 2023.01.08
[Spring JPA] ORM, Spring JPA 그리고 Hibernate  (0) 2023.01.08
RedirectAttributes  (0) 2021.05.06
PropertyPlaceHolderConfigure  (0) 2021.04.08