웹개발/스프링부트

엔티티 클래스와 JpaRepository

sunhoKim 2021. 7. 11. 22:22

Spring Data JPA가 개발에 필요한 것은 단지 두 종류의 코드만으로 가능합니다.

 

1. JPA를 통해서 관리하게 되는 객체를 위한 엔티티 클래스

2. 엔티티 객체들을 처리하는 기능은 가진 Repository

 

@Entity

 

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

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

 

@Table

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

ex) @Table(name = "t_memo")와 같이 지정하는 경우, 생성되는 테이블의 이름이 't_memo' 테이블로 생성됩니다.

 

@Id와@GeneratedValue

@Entity가 붙은 클래스는 Primary Key에 해당하는 특정 필드를 @Id로 지정해야만 합니다.

@Id가 사용자가 입력하는 값을 사용하는 경우가 아니면, 자동으로 생성되는 번호를 사용하기 위해서 @GeneratedValue라는 어노테이션을 활용합니다.

 

@GeneratedValue(strategy = GenerationType.IDENTITY) 부분은 PK를 자동으로 생성하고자 할 때 사용합니다.

오라클의 경우, 별도의 번호를 위한 별도의 테이블을 생성

MySQL,MariaDB면 'auto increment'를 기본으로 사용해 새로운 레코드가 기록될 때 마다 다른 번호를 가질 수 있도록 처리

 

키 생성 전략

AUTO(default) - JPA구현체(스프링 부트에서는 Hibernate)가 생성 방식을 결정IDENTITY - 사용하는 데이터베이스가 키 생성을 결정. MySQL, MariaDB의 경우 auto increment방식을 이용SEQUNCE - 데이터베이스의 sequence를 이용해서 키를 생성. @SequenceGenerator와 같이 사용

TABLE - 키 생성 전용 테이블을 생성해서 키 생성. @TableGenerator와 함께 사용

 

 

728x90

'웹개발 > 스프링부트' 카테고리의 다른 글

RepositoryTest Code  (0) 2021.07.17
application.properties  (0) 2021.07.11
Spring Data JPA  (0) 2021.07.11
[스프링 부트] 기초3  (0) 2021.06.24
[스프링 부트] 기초2  (0) 2021.06.22