# 1. Language/☕ Java

JPA의 Entity와 Repository

둥굴둥굴둥굴레차 2021. 9. 16. 23:35

Entity

데이터 베이스에 저장하기 위해 정의한 클래스. Domain이라 생각하면 된다.

유저가 직접 정의한 클래스다.

RDBMS의 테이블을 객체화시킨 것과 같다.

따라서 테이블의 이름과 컬럼 정보들을 가지고 있다.

 

@Id

PK값으로 두려는 변수를 선언.

@GeneratedValue 어노테이션을 통해 Id값을 어떻게 생성할지에 대해 설정할 수 있다.

 

@Table

별도 이름을 가진 DB 테이블과 매핑하며, @Table(name=" ")와 같은 방식으로 사용한다.

풀어서 설명하자면, 기본적으로 @Entity로 선언된 클래스 이름은 실제 DB의 테이블 명과 일치하는 것을 매핑함. 따라서 @Entity의 클래스 이름과 DB 테이블 명이 다른 경우에 매핑할 때 사용한다.

 

 

@Column

@Column(name=" ")의 형식으로 사용한다.

이 선언은 반드시 필요한 선언은 아니다.

하지만 @Table의 용도와 비슷하게, @Column에서 지정한 변수명과 DB의 컬럼 명을 다르게 해주고 싶을 때 사용한다.

그렇지 않은 경우엔 기본적으로 멤버 변수와 일치하는 DB 컬럼을 매핑해준다.

 


Repository

Entity생성이 끝나면 이제 JpaRepository 인터페이스를 사용하여 Repository 인터페이스를 만들자.

JpaRepository를 상속받을 땐 사용될 Entity 클래스와 Id값이 들어간다. JpaRepository <T, ID>

이와 같이 JpaRepository를 상속하면 해당 인터페이스는 Entity에 대해 아래의 기능을 제공한다.

  • save()
    레코드 저장(insert, update)
  • findOne()
    PK로 하나의 레코드 찾기
  • findAll()
    전체 레코드 가져오기.
    sort, pageable가능
  • count()
    레코드 갯수
  • delete()
    레코드 삭제

 


 

 

🔽 REFERENCE

 

JPA 사용법 (JpaRepository)

JPA에 대한 개념은 이해가 갔지만 처음 코드를 접했을 땐 이해 안가는 부분이 많았다. 그래서 잘 정리된 블로그를 참고해 다시 한번 사용법을 알기 쉽게 정리해보고자 한다. Entity 먼저 데이터베

jobc.tistory.com